vue 生命周期理解
-
beforeCreate
– 是new Vue()之后触发的第一个钩子,在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。 -
created
– 在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更改数据不会触发updated函数。可以做一些初始数据的获取,在当前阶段无法与Dom进行交互,如果非要想,可以通过vm.$nextTick
来访问Dom。 -
beforeMount
– 在挂载开始之前被调用:相关的 render 函数首次被调用。
– 发生在挂载之前,在这之前template模板已导入渲染函数编译。而当前阶段虚拟Dom已经创建完成,即将开始渲染。在此时也可以对数据进行更改,不会触发updated。 -
mounted
– 实例被挂载后调用,这时 el 被新创建的vm.$el
替换了。如果根实例挂载到了一个文档内的元素上,当 mounted 被调用时vm.$el
也在文档内。注意 mounted 不会保证所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以在 mounted 内部使用vm.$nextTick
。
– 在挂载完成后发生,在当前阶段,真实的Dom挂载完毕,数据完成双向绑定,可以访问到Dom节点,使用$refs属性对Dom进行操作
– 一般我们在这儿里进行 访问dom 、监听事件、设置定时器、ajax请求 -
beforeUpdate
– 发生在更新之前,也就是响应式数据发生更新,虚拟dom重新渲染之前被触发,你可以在当前阶段进行更改数据,不会造成重渲染。 -
updated
– 发生在更新完成之后,当前阶段组件Dom已完成更新。要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新。
– 在这里我们执行获取到更新后的 dom 依赖 dom 操作的库 -
beforeDestroy
– 发生在实例销毁之前,在当前阶段实例完全可以被使用,我们可以在这时进行善后收尾工作,比如清除计时器。 -
destroyed
–发生在实例销毁之后,这个时候只剩下了dom空壳。组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。