1.钩子函数
创建前后
beforecreate:
在实例初始化之后
这个阶段的data,methods,computed以及watch的数据和方法不能被访问
created:
在实例创建完成后被立即调用此时data 和 methods已经可以使用 但是页面还没有渲染出来
挂载前后
beforeMount:
发生在页面渲染之前,当前阶段虚拟Dom已经创建完成,即将开始渲染。
在此时也可以对数据进行更改,不会触发updated。
mounted:
el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。 数据已经真实渲染到页面上 在这个钩子函数里面我们可以使用一些第三方的插件
更新前后
beforeUpdate:
发生在更新之前,也就是响应式数据发生更新,虚拟dom重新渲染之前被触发,
你可以在当前阶段进行更改数据,不会造成重渲染。
updated:
发生在更新完成之后,当前阶段组件Dom已完成更新。
要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新。
销毁前后
beforeDestroy:
发生在实例销毁之前,在当前阶段实例完全可以被使用,
我们可以在这时进行善后收尾工作,比如清除计时器
destroyed:
发生在实例销毁之后,这个时候只剩下了dom空壳。组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。
补充:
activated:
keep-alive专属,组件被激活时调用
deactivated :
keep-alive专属,组件被销毁时调用
钩子函数的使用方法
1.beforecreate: data 和 $el 都没有初始化 全部为 undefined,
可以在加个loading事件,在加载实例时触发 ,
2.created: 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用
3.mounted: 挂载元素,获取到dom节点
4.beforeUpdate 可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
5.updated: 可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,
因为这可能会导致更新无限循环。 该钩子在服务器端渲染期间不被调用。
6.beforeDestroy : 可以做一个确认停止事件的确认框
7.destroyed 可以执行一些优化操作,清空定时器,解除绑定事件