首页 > 其他分享 >Vue生命周期

Vue生命周期

时间:2024-03-07 17:12:25浏览次数:13  
标签:生命周期 函数 render 钩子 Vue 组件 节点 运行

vue官网图示

image

初始化阶段

  1. 首先进行一些初始化操作,主要是设置一些私有属性。
  2. 运行beforeCreate钩子。
  3. 进入注入阶段:处理props,data,computed,watch,methods,provide等。
  4. 运行created钩子。
  5. 生成render函数:如果有render配置直接使用;没有的话使用编译器把模板字符串编译为render函数。
  6. 运行beforeMount钩子。
  7. 生成真实dom:先创建一个watcher,传入一个函数updateComponent;该函数会运行render函数生成vnode,在把vnode传入_update函数运行。
    在render函数运行期间会收集所有依赖,将来数据变化时会重新运行updateComponent函数
    在_update函数运行期间会触发patch函数,由于此时没有旧树,因此直接为虚拟dom树的每一个普通节点创建对应的真实dom,挂载在elm属性上。
    如果遇到一个组件节点,则进入组件实例化,流程基本相同;最终把创建好的组件实例挂载在componentInstance属性中。
  8. 运行mounted钩子

更新阶段

  1. 数据变化后,所有依赖该数据的watcher都会重新运行,watcher会被调度器放入nextTick中运行,也就是微队列中,调度器可以避免多个数据同时变化导致重复运行函数。
  2. 运行beforeUpdate钩子。
  3. updateComponent函数重新运行
    在运行render函数的过程中会去掉之前的依赖,重新收集依赖。
    在运行_update函数的过程中会触发patch函数对新旧两个数进行对比。对比会导致普通节点与组件节点的创建,删除,移动,更新。新组件创建进入组件实例化流程。旧组件删除进入销毁阶段。组件更新就进入更新阶段。
  4. 运行updated钩子。

销毁阶段

  1. 当组件需要销毁时,会运行$destroy方法删除组件。
  2. 该方法会先运行beforeDestroy钩子
  3. 递归调用子组件的$destroy方法,丢弃本组件。
  4. 运行destroyed钩子

标签:生命周期,函数,render,钩子,Vue,组件,节点,运行
From: https://www.cnblogs.com/zhanxinbing/p/18059282

相关文章

  • npm+vue打包静态文件+端口转发
    先说要点,再showcode1,nginx转发不要填写127.0.0.1,localhost等ip地址2,location根路径要加try_file选项,请求转发到index.html3,如果有path有/,那就都带上/ 我的nginx.conf#userroot;worker_processes1;events{worker_connections1024;}http{inclu......
  • vue项目引入自定义svg
    图标可以使用element-ui的图标库、第三方的图标库或者引入svg使用,这里是讲如何使用自定义的svg。将SVG图标放入项目 自定义的svg可以访问 https://www.iconfont.cn地址,搜索你想要的图标,下载SVG格式,放入项目的src/assets/icons/svg文件夹中。并在src/assets/icons/index.js......
  • 若依集成CIM(即时推送系统)实现将服务端修改为SpringBoot+Vue前后端分离版(文末见代码
    ​ 场景若依前后端分离版本地搭建开发环境并运行项目的教程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 CIMGitee地址:https://gitee.com/farsunset/cimCIM项目是基于mina或者netty框架下的推送系统,我们平常使用第三方的推送SDK,如极光推送,百度......
  • Vue学习笔记38--单文件组件
    单文件组件命名规则如下所示:------单个单词命名规则:------方式一:temp.vue方式二:Temp.vue建议使用(可和vue开发者工具呼应)------多个单词命名规则------方式一:my-temp.vue方式二:MyTemp.vue建议使用(可和vue开发者工具呼应)组件交互相关的代码暴露方式:1.分别暴露:exportconst......
  • Vue+Axios的方法异步回调顺序问题
    一、问题阐述有的时候我们需要控制异步函数的执行顺序,比如a方法中如果要用到异步函数b方法的请求结果,就需要进行顺序控制,否则a函数先执行就会导致找不到数据直接报错。二、方法1.异步控制1.1.async,await等做异步控制1.2修改函数放置位置达到异步控制效果(我遇到的情况无效,但......
  • vue_居中左对齐
    div中文本居中对齐后,然后再左对齐如下效果:===============================22345645=================2345678987654============12========================================= <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8......
  • Vue调试神器vue-devtools配置 / 解决提示 Download the Vue Devtools extension for a
    访问Vue页面,控制台提示:    ......
  • vue2项目中不能直接在store中声明响应式变量,vue3项目中能在store中直接声明响应式变量
    vue2项目中不能直接在store中声明响应式变量,vue3项目中能在store中直接声明响应式变量,页面元素也会响应式生效在Vue2项目中,store中的状态默认情况下是不具备响应式的特性的。这是因为Vue2.x使用的是基于对象定义的Vue.observable()来创建响应式对象,而store中的状态是通......
  • Vue学习笔记37--内置关系
    示例一:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>一个重要的内置关系</title>......
  • vue使用超图openlayers调用mapv实现蜂窝图
    在用超图openlayer开发的时候遇到问题,在此作为记录。文字描述不对的地方请多担待, 下载依赖,npmimapv 按需引入,因为官网例子是普通的html引入,{mapv}引入方式调用的是超图@supermap中的方法。DataSet是mapv的方法 import{Mapv} from'@supermap/iclient-ol/overla......