Vue -- 生命周期

生命周期:从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程。

在创建之前,vue做了两件事:methos声明,生命周期钩子函数声明。

  • 创建(data数据注入,data数据劫持
    • 遍历递归data选项,给每个声明式变量添加setter/getter。
    • 把劫持过变量都放在组件实例上)。

beforeCreate( 创建前 ):有this,但此时data、methods、computed以及watch上的数据和方法还未初始化,都不能被访问。

created( 创建后 ):此时的data 和 methods 都已经被初始化,但是没有$el,dom节点。
  作用:ajax请求 定时器 事件监听(window)。

  • 挂载(vue做了下面的事(vue引擎第一次工作)
    • 根据render()渲染函数,生成“抽象语法树AST”(此时还是带有指令的),再把AST第一次创建成“虚拟DOM(VNode1)”(Vnode是真实DOM的一种数据描述,它本质上是json格式的数据)。
    • 根据Vnode1创建真实DOM(第一次接触,收集依赖,watcher发生在此处)把那些声明式变量全部替换成真实数据,DOM渲染完成)。

 beforeMount 挂载前template 模板已导入渲染函数编译。此时虚拟Dom已经创建完成,即将开始渲染。在这一阶段也可以对数据进行更改。

mounted   挂载后在挂载完成后发生,此时真实的Dom挂载完毕,数据完成双向绑定,可以访问到、Dom节点,使用$refs属性对Dom进行操作。
  作用:操作节点、ajax请求 ,开启定时器、订阅消息、绑定自定义事件等初始化操作

  • 更新(vue做了以下事情:
    • 当vue上下文的data发生变化时,使用render()渲染函数在生成一新的Vnode2。
    • 使用大名鼎鼎的Diff运算,patch(old Vnode,new Vnode),找出两个Vnode最小差异,合并Vnode,生成新的Vnode,删除旧的Vnode。
    • notify通过Watcher根据"依赖收集"在此更新真实DOM

beforeUpdate  更新前会执行多次  数据更新 dom节点没有更新。

updated  更新完毕会执行多次 数据更新,dom节点也更新。

  • 销毁(vue做了如下事情:
    • 拆卸掉了Watcher,所以DOM不可能再发生更新。
    • 拆卸掉当前组件的所有子组件,所以这些子组件也会经入销毁阶段。
    • 卸载掉当前组件中的事件处理器

beforeDestroy  销毁前数据可以更新 视图已经不更新。
    作用:此时,vm中的所有都处于可用状态,马上要执行销毁过程。一般在此阶段:移除事件监听、关闭定时器,取消订阅消息 解绑自定义事件等收尾操作。

destoryed   销毁后没有this,切换视图与vue实例的联系。

面试题:https://blog.csdn.net/weixin_45836841/article/details/131376979?spm=1001.2014.3001.5502

相关推荐

  1. vue 生命周期

    2024-04-14 17:02:03       55 阅读
  2. Vue生命周期

    2024-04-14 17:02:03       64 阅读
  3. Vue生命周期

    2024-04-14 17:02:03       51 阅读
  4. Vue生命周期详解

    2024-04-14 17:02:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 17:02:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 17:02:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 17:02:03       87 阅读
  4. Python语言-面向对象

    2024-04-14 17:02:03       96 阅读

热门阅读

  1. Python的MATLAB使用

    2024-04-14 17:02:03       41 阅读
  2. 配置sql server启动参数

    2024-04-14 17:02:03       38 阅读
  3. 003 传参

    2024-04-14 17:02:03       32 阅读
  4. Linux:scp的远程拷贝文件的三种用法

    2024-04-14 17:02:03       38 阅读
  5. LC 76.最小覆盖子串

    2024-04-14 17:02:03       42 阅读
  6. 外星符号译码c++

    2024-04-14 17:02:03       36 阅读
  7. leetcode热题HOT 22. 括号生成(回溯)

    2024-04-14 17:02:03       38 阅读
  8. vue3 浅学

    2024-04-14 17:02:03       37 阅读
  9. 鼠标监听事件、模拟画图工具

    2024-04-14 17:02:03       33 阅读
  10. 久菜盒子|留学|推荐信|结构生物学、构造学

    2024-04-14 17:02:03       33 阅读
  11. 239. 滑动窗口最大值

    2024-04-14 17:02:03       36 阅读
  12. 实际工作中kafka的应用和遇到的问题

    2024-04-14 17:02:03       39 阅读
  13. 【ds】 数组中重复的数字

    2024-04-14 17:02:03       38 阅读
  14. React构建组件的方式有哪些,有什么区别?

    2024-04-14 17:02:03       41 阅读