vue生命周期 钩子函数

2023年4月27日09:06:46

vue实例的生命周期:从创建到销毁的整个过程

1、钩子函数

vue框架内置函数,随着组件的生命周期阶段,自动执行

使用钩子函数 可以知道vue生命周期到达了什么阶段

作用:在特定的时间点执行特定的操作

分类:4大阶段8个方法(面试题)

2、初始化阶段

1、new Vue()-vue实例化(组件也是一个小vue实例)

2、Init Events &Lifecycle-初始化事件和生命周期函数

3、beforeCreate(初始化data/methods之前)-生命周期钩子函数执行

4、Init injection&reactivity-Vue内部添加data和methods等

5、create(初始化后-created执行)-生命周期钩子函数被执行,实例创建

6.接下来是编译模板阶段 –开始分析

7.Has el option? – 是否有el选项 – 检查要挂到哪里

没有. 调用$mount()方法

有, 继续检查template选项

结论:(兜底记住)

1、在created里操作data里变量-发起网络请求(网页打开就要数据,从这里发起请求)

2、created函数触发能获取到data不能获取真实dom

3、挂载阶段

补充:

真实dom和模板标签(template里写的叫模板标签):

template(模板标签) - vue (vue-template-compiler的包)编译(转换翻译)-解析v-for/v-model/v-if/v-html/...(vue语法)

->虚拟dom(一个Js对象,里面保存了关键的属性和信息)

->插入(更新)到真实dom上(网页上)

虚拟dom的好处:

1、虚拟dom的关键属性要比真实dom少(一个标签对象有200+属性)-后期做对比找差异快的多

2、操作真实dom和虚拟dom那个快?虚拟dom(本身就是一个Js对象)


1.template选项检查

有 - 编译template返回render渲染函数

无 – 编译el选项对应标签作为template(要渲染的模板)

2.虚拟DOM挂载成真实DOM之前

3.beforeMount – 生命周期钩子函数被执行

4.Create … – 把虚拟DOM和渲染的数据一并挂到真实DOM上

5.真实DOM挂载完毕

6.mounted – 生命周期钩子函数被执行

结论:(兜底记住)

mounted里获取真实dom,操作真实dom

4、更新阶段

1.当data里数据改变, 更新DOM之前

2.beforeUpdate(更新之前) – 生命周期钩子函数被执行

3.Virtual DOM…… – 虚拟DOM重新渲染, 打补丁到真实DOM

4.updated (真实dom更新后)– 生命周期钩子函数被执行

5.当有data数据改变 – 重复这个循环

结论(兜底记住)

updated里获取更新后的真实dom

5、销毁阶段

1.当$destroy()被调用 – 比如组件DOM被移除(例v-if)

2.beforeDestroy – 生命周期钩子函数被执行

3.拆卸数据监视器、子组件和事件侦听器

4.实例销毁后, 最后触发一个钩子函数

5.destroyed – 生命周期钩子函数被执行

总结:(v-if或者组件实例this.$destroyed())->此组件被销毁

使用:销毁组件内计时器/定时器/全局事件(释放组件占用的全局资源)

如果组件被缓存,组件就不会执行销毁/初始化创建的方法

这时需要知道组件被失去激活/激活时可使用以下两个钩子函数

6、activated  

 --- 组件被激活状态

7、deactivated

--- 组件被失去激活状态

注意:第一次创建时activated也会被执行

  • 作者:H-萝贝
  • 原文链接:https://blog.csdn.net/H_carrot/article/details/120538407
    更新时间:2023年4月27日09:06:46 ,共 1448 字。