1、beforeCreate
实例初始化之后,this指向创建的实例,不能访问到data、computed、watch、methods上的方法和数据。常用于初始化非响应式变量。
2、created
实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到$el属性,$ref属性内容为空数组。常用于简单的ajax请求,页面的初始化。
3、beforeMount
实例在挂载前,在挂载开始之前被调用,beforeMount之前,会找到对应的tempiate,并编译成render函数。
4、mounted
实例挂载到DOM上,此时可以通过DOM、API获取到DOM节点,$ref属性可以访问。常用于获取VNode信息和操作,ajax请求。
5、beforeUpdate
更新数据前,响应式数据更新时调用,数据已更新但还没有渲染到dom中,发生在虚拟DOM打补丁之前。适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器。
6、updated
更新数据,虚拟DOM重新渲染和打补丁之后调用,数据已更新到dom中,组件DOM已经更新,可执行依赖于DOM的操作,避免在这个钩子函数中操作数据,可能陷入死循环。
7、beforeDestroy
实例、组件销毁之前调用,这一步实例仍然完全可用,this仍然能获取到实例。常用于销毁定时器、解绑全局事件、销毁插件对象等操作。
8、Destroyed
实例、组件销毁后调用,调用后,Vue实例指示的所有东西都会解绑定,所有的时间监听器会被移除,所有的子实例也会被销毁。
注:
1.created阶段的ajax请求与mounted请求的区别:前者页面视图未出现,如果请求信息过多,页面会长时间处于白屏状态。 2.mounted 不会承诺所有的子组件也都一起被挂载。