生命周期钩子

201 阅读2分钟

Vue官方图
生命周期钩子:

Vue实例的生命周期:从创建时设置数据到编译模板,将实例装载到DOM,最后在数据更改期间更新 DOM。

Vue生命周期钩子:在默认情况下,Vue实例经历创建和更新 DOM 的过程中,会在其中运行一些函数,在这些函数内部创建并声明 Vue 组件。 这些函数被称为生命周期钩子。

以下八种函数循序渐进,共同构成生命周期。

1.Before create

在Vue实例初始化后立即被调用,第一个生命周期钩子
 <script>
  export default {
  name: 'Test',
  beforeCreate() {
   alert('beforCreate hook has been called');
   console.log('beforCreate hook has been called');
  }
 }
 </script>
首先执行alert语句

2.Created

紧接beforeCreate函数,此时Vue实例已经激活了计算属性、事件等属性和随之而来的操作。
但是 Vue 实例在此阶段尚未安装,无法在此处操作 DOM,元素属性尚不可用。
可以用来在一个实例被创建之后执行代码
`new Vue({
 data: {  a: 1 },
 created: function () { 
 // `this` 指向 vm 实例
 console.log('a is: ' + this.a)
  }
 })
 // => "a is: 1"`
 生命周期钩子中的this指向上下文,因而不要在选项属性或回调上是用箭头函数。
 因为箭头函数并没有this,

(3.Before mount)

DOM 上挂载实例之前,可以编译模板和作用域样式。但Vue实例仍然未安装,与其相关的操作和属性不可用

4.Mounted

vue实例安装完毕,可以使用元素属性及数据适合模板、DOM元素替换为数据填充元素等操作。
app 组件或项目中的其他组件都可以使用了

(5.Before update)

此阶段对需要更新 DOM 的数据进行更改。在进行删除事件侦听器之类的更改之前,适合任何逻辑。

6.Updated

承接Before update,对 DOM 更新之后立即调用此生命周期钩子。在此处执行与DOM相关的操作

(7.Before destroy)

Vue 实例被销毁之前,实例和所有函数仍然完好无损并在此处工作。在此阶段可执行资源管理、删除变量和清理组件

8.Destroyed

Vue 生命周期的最后阶段,其中所有的子 Vue 实例都已被销毁,事件监听器和所有指令之类的东西在此阶段已被解除绑定。
在对象上运行 destroy 之后调用