前端:生命周期函数与钩子函数
什么是生命周期函数?
即一个Vue实例从创建到销毁的这个过程中自动执行的函数。
什么是钩子函数?
钩子函数就好比找了个代理,监视事件是否发生,如果发生了这个代理就执行你的事件处理方法;在这个过程中,代理就是钩子函数。
什么是回调函数?
回调函数是你留个处理方法给事件,事件发生了以后会自动执行你留下调处理方法。
直白的说:回调函数===钩子函数===生命周期函数
钩子函数是一些框架中的叫法,是这个框架中生命周期的某个阶段的回调函数
下面就巩固一下生命周期函数的各个阶段:
生命周期函数各个阶段:
beforeCreated: el和data并未初始化
created: 完成了data的初始化,el还未完成
beforeMount: 完成el和data的初始化(相关的 render
函数首次被调用)
mounted: 完成挂载。mounted不会保证所有的子组件也都被挂载完成。如果希望等到整个视图都渲染完毕再执行某些操作,可以在 mounted内部使用 vm.$nextTick
mounted: function () { this.$nextTick(function () { // 仅在整个视图都被渲染之后才会运行的代码 }) }
在beforeMount时期:p标签内还是{{ message }},这一步是利用虚拟DOM技术,占住位置,接着在mounted时期完成值的渲染。
beforeUpdate: 值的重新渲染发生在这一时期。(这里适合在现有 DOM 将要被更新之前访问它,比如移除手动添加的事件监听器。)
Update:不会保证所有的子组件也都被重新渲染完毕。如果你希望等到整个视图都渲染完毕,可以在 Update里使用 vm.$nextTick:
updated: function () { this.$nextTick(function () { // 仅在整个视图都被重新渲染之后才会运行的代码 }) }
activated: 被 keep-alive 缓存的组件激活时调用。
deactivated: 被 keep-alive 缓存的组件失活时调用。
beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。
destroy:实例销毁后调用。该钩子被调用后,对应 Vue 实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。
errorCaptured: 在捕获一个来自后代组件的错误时被调用。
此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false
以阻止该错误继续向上传播。
参考博客: