1、生命周期
-
- beforeCreate: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用
- created:实例创建完成之后立马触发的钩子函数。实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。在beforeCreate之后开始监听data数据变化情况。
- beforeMount:在created之后,开始编译模板,将data里的数据和vue语法写的模板编译成html;开始挂载编译生成的HTML到对应的位置时触发beforeMount钩子函数,相关的 render 函数首次被调用
- mounted:挂载到页面完成后触发mounted钩子函数,此时可以进行发送Ajax请求获取数据的操作。mounted 不会保证所有的子组件也都一起被挂载 。mounted在整个实例生命内只执行一次
- beforeUpdate: 数据更新时调用,发生在虚拟 DOM 打补丁之前
- updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。updated 不会保证所有的子组件也都一起被重绘。如果希望等到整个视图都重绘完毕,可以在 updated 里使用 vm.$nextTick。
- activated:keep-alive 组件激活时调用
- deactivated:keep-alive 组件停用时调用
- beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用
- destroyed:该钩子被调用后,对应 Vue 实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁
自己描述:在vue实例被初始化之后,触发beforeCreate钩子函数,然后开始进行数据观测和事件配置;实例创建完成之后立马触发created钩子函数,此时已经配置好数据观测和属性以及方法;之后开始编译模板,将data里的数据和vue语法写的模板编译成HTML,开始挂载HTML到对应的位置时触发beforeMount钩子函数,相关的render函数也首次被调用;当挂载到页面完成后触发mounted钩子函数;当数据发生更新时,触发beforeUpdate钩子函数,然后虚拟DOM开始重新渲染和打补丁,完成之后触发updated钩子函数;在实例销毁前触发beforeDestroy钩子函数,此时实例还可用,然后开始移除事件监听器,销毁子实例等等,完成之后触发destroyed。
-
created和mounted区别:参考:Vue生命周期中mounted和created的区别
- created: 在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。此时操作DOM节点,找不到相应元素。
- mounted: 在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
-
- 加载渲染过程:
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
- 子组件更新过程:
父beforeUpdate->子beforeUpdate->子updated->父updated
- 父组件更新过程:
父beforeUpdate->父updated
- 销毁过程:
父beforeDestroy->子beforeDestroy->子destroyed->父destroyed
- 加载渲染过程:
-
所有的生命周期钩子自动绑定
this
上下文到实例中,所以不能使用箭头函数来定义一个生命周期方法