Vue生命周期详解

11 篇文章 3 订阅
订阅专栏

一、生命周期的概念

        生命周期,顾名思义就是一个vue组件从 创建销毁 的过程。 

 二、钩子函数

        Vue中有许多内置函数,是随着组件生命周期阶段自动执行的 。我们可以通过钩子函数来在特定的某个生命周期的阶段执行特定的操作,比如能够在 created 中发起 ajax 请求,从而能够初始化 data 数据渲染页面。

        生命周期可以分为四个阶段:

  • 初始化阶段
  • 挂载阶段
  • 更新阶段
  • 销毁阶段

         每个阶段又有相对应的方法,分别为:

阶段方法名方法名
初始化beforeCreatecreated
挂载beforeMountmounted
更新beforeUpdateupdated
销毁beforeDestroydestroyed

官方文档:Vue 实例 — Vue.js

                                                                 生命周期实例图

 三、分步详解

 1. 初始化阶段             

  1. new Vue() – Vue实例化(组件也是一个小的Vue实例)
  2. Init Events & Lifecycle – 初始化事件和生命周期函数
  3. beforeCreate – 生命周期钩子函数被执行
  4. Init injections&reactivity – Vue内部添加data和methods等
  5. created – 生命周期钩子函数被执行, 实例创建----在此函数能够获取到数据,但获取不到真实DOM元素,可以在此进行网络请求或者注册全局事件
  6. 接下来是编译模板阶段 –开始分析
  7. Has el option? – 是否有el选项 – 检查要挂到哪里

    没有就调用 $mount() 方法,有就继续检查 template 选项

 

 2.挂载阶段

  1.  进行检查是否有 template 选项,有就编译 template 返回 render 渲染函数,没有则编译 el选项对应标签作为 template (要渲染的模板)。
  2. 虚拟DOM挂载成真实DOM之前 beforeMount --- 钩子函数被执行,预处理 data 数据,updated 不会被触发
  3. Create ---把虚拟DOM和要渲染的数据一并挂载
  4. 真实DOM挂载完成
  5. mounted --- 钩子函数被执行,可以在此函数中获取挂载后真实DOM的数据

 3.更新阶段

  1. 当 data 里的数据被改变后,更新DOM之前执行
  2. beforeUpdate -钩子函数被执行,在此只能拿到最初的DOM元素
  3.  虚拟DOM重新渲染,打补丁到真实DOM
  4. updated---钩子函数被执行
  5. 当有 data 数据又有改变-重复这个循环

4.销毁阶段

  1.  当 $destiry() 被调用 - 比如用 v-if 时组件DOM被移除
  2. beforeDestroy - 钩子函数被执行
  3. 销毁 watch 等数据监视器、子组件和事件侦听器
  4. 实例被销毁后,触发最后一个钩子函数 - destroyed

5.不常用的钩子函数 

  •  使用 keep-alive 组件缓存中组件不再创建和销毁, 而是激活和非激活

    1. activated - 激活

    2. deactivated - 失去激活状态


    这两个钩子函数一般是一块配合使用的,组件切换会导致组件被频繁销毁和重新创建, 性能不高,这时候我们就可以用 keep-alive 组件配合这两个钩子函数来控制组件的激活与不激活,该钩子在服务器端渲染期间不被调用。

6.自定义指令的钩子函数

全局下的自定义指令

 input标签中:  v-指令名:属性名.修饰符='值'
                         v-on:keyup.enter="方法"
Vue.directive(’指令名‘,{
    指令生命周期

  1.     bind: 绑定时,自定义指令绑定于相应dom时执行,类似于vue生命周期的beforeMount
     
        bind(dom,obj,vnode){
               dom:指令所在dom节点
               obj:{
                       属性名,
                       修饰符,
                       值(value)
                }
                vnode:虚拟dom节点信息
                     context拿到当前指令所在组件实例对象        
        },
  2.     inserted:渲染完成时执行,指令所在dom添加到父节点时执行,类似于mounted
     inserted(dom,obj,vnode){ },
  3.     update:更新时,不保证更新完成(指令所在组件有更新时执行),不保证该更新和当前指令所在dom有关
        update(dom,obj,vnode){
            dom:当前指令所在dom
            obj:{
                属性名
                修饰符
                值   
            }
            vnode:context:获取指令所在组件的实例对象
        }
  4.     componentUpdated:更新完成时,指令所在组件更新完成(包括子组件也更新完成),类似于updated
  5.     unbind:解绑,类似于beforeDestroy

})
                                             --------------------------------------------------------------------仅仅是类似

局部自定义指令 

directives:{
    指令名:{生命周期}
}

7.路由的钩子函数

  •  全局路由钩子
    □ beforeEach
            前置守卫
    □ afterEach
            已进入相应路由时执行
    □ beforeResolve
            全局解析守卫,解析钩子
  •  组件内导航钩子
    ♦ 路由所对应组件钩子(路由配置中的component所对应组件)
             ■ beforeRouteEnter;进入前,进入路由所对应组件前,在beforeCreate前产生的,它不能使用实例化对象this
     
            beforeRouteEnter((to,from,next)=>{
                next((vm)=>{
                    vm:当前组件的实例对象
                })
            })

             ■ beforeRouteUpdate:更新前,路由更新了,但是路由所对应组件不变,它是更新前触发,更新没有完成,如果需要获取更新完成后信息,要加$nextTick
             ■ beforeRouteLeave:离开前,切换页面离开前就会触发,它在beforeDestroy前执行
    ♦ 路由配置所对应钩子
             beforeEnter:读取路由配制前会执行该钩子

执行先后
   beforeEach===>beforeEnter===>beforeRouteEnter===>beforeResolve===>afterEach
更新时执行先后
   beforeEach===>beforeRouteUpdate===>afterEach

 beforeDestroy执行时间节点
A路由跳转到B路由时它们A组件与B组件执行的生命周期勾子
beforeCreate(B)===>created(B)===>beforeMount(B)===>beforeDestroy(A)===>
destroyed(A)===>mounted(B)
父组件与子组件生命周期执行先后
beforeCreate(父)===>created(父)===>beforeMount(父)===>beforeCreate(子)===>
created(子)===>beforeMount(子)===>mounted(子)===>mounted(父)

vue生命周期图解
12-13
vue生命周期图解,从创建、装载到销毁,各个环节执行的方法
关于Vue生命周期详解
10-29
关于Vue生命周期详解vue每个组件都是独立的,每个组件都有一个属于它的生命周期,从一个组件创建、数据初始化、挂载、更新、销毁,这就是一个组件所谓的生命周期
vue生命周期
weixin_43196880的博客
03-12 508
vue生命周期vue中的一个重点难点。同时也是面试的一个必考点 vue有10个生命周期。分别是beforecreate、created、beforemount、mounted、beforeupdate、update、activated、deactivated、beforedestroy、destroy。 其中,除了mounted生命周期函数,其余的生命周期函数在服务端渲染期间都不能被调用。 beforedcreated:是在实例初始化以后,数据观测以后和event/wtach的事件配置之前被调用。(注意
初学Vue 常用指令与生命周期
最新发布
weixin_63780361的博客
04-11 407
基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。指令:HTML标签上带有v-前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for…注意事项:通过v-bind或者是v-model绑定的变量,必须在数据模型中声明。生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子)。Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。框架是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。
Vue生命周期详解
热门推荐
weixin_45791692的博客
04-11 14万+
Vue生命周期 Vue生命周期是每个使用Vue框架的前端人员都需要掌握的知识,以此作为记录。 Vue生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期。钩子函数是Vue生命周期中每个阶段对外开放让程序员操作Vue的接口。Vue有8个钩子函数,分别为: beforeCreate( 创建前
vue 生命周期 详解
dianshu5625的博客
12-20 1869
详解Vue Lifecycle 先来看看vue官网对vue生命周期的介绍 Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程,我们称这是Vue生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。 每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁。 实例、组件通过new...
vue生命周期详解
独特的人
10-26 439
1. 生命周期 什么是vue生命周期? 一个组件从 创建 到 销毁 的全过程就是生命周期 Vue生命周期 2. 钩子函数 vue框架内置函数,伴随着组件的生命周期阶段,自动执行 作用: 特定的时间点,执行特定的操作 使用场景: 组件创建完成完毕后,可在created生命周期函数中发起Ajax请求,从而初始化 data 数据 分类: 四大阶段8个方法 钩子函数的分类 阶段 方法名 方法名 初始化 beforeCreate created ..
vue生命周期
zhangvalue的博客
09-28 8万+
随着对 vue 的不断了解,会越来越发现它生命周期的重要性,只有了解了它的生命周期,才能在开发项目的时候在逻辑上的很好的判断什么时候该发生什么事件,即很好的控制页面。 一、什么是 vue 生命周期 Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue生命周期。下面这个照片是官网中的生命周期照片 二、生命周期函数 Vue生命周期总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前
vue组件生命周期详解
08-28
主要为大家详细介绍了vue组件生命周期,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Vue生命周期示例详解
08-30
主要为大家详细介绍了Vue生命周期的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
vue实例的生命周期详解
04-24
vue生命周期
详解Vue生命周期的示例
08-31
本篇文章主要介绍了详解Vue生命周期的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
vue生命周期的深入理解
01-18
一.Vue生命周期简介 官网:https://cn.vuejs.org/v2/api/#beforeCreate Vue实例从创建到销毁的过程,就是生命周期。详细来说也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程...
Vue的属性、方法、生命周期实例代码详解
10-16
主要介绍了Vue的属性、方法、生命周期的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
Vue 生命周期研究
01-08
Vue 生命周期详解 文章目录Vue 生命周期详解一.概念二.生命周期的钩子函数1.生命周期的三个阶段初始挂载阶段更新阶段销毁阶段2.生命周期的钩子函数释义3.生命周期钩子函数详解beforeCreate 实例创建之前created 实例...
vue生命周期详解:从入门到精通
01-08
Vue生命周期 在学习vue的过程中,vue生命周期可谓是重中之重,必学的一部分。 每个 Vue 实例在被创建时都要经过一系列的初始化过程,例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM ...
Vue 生命周期详解
w_lightning的博客
08-18 137
Vue生命周期 生命周期初识 生命周期详解(八个钩子函数) 生命周期 生命周期Vue是一个构造函数,当执行执行这个函数时,相当于初始化vue实例; 在创建实例过程中,需要设置数据监听,编译模板,将实例挂载到DOM上,数据更新能够让DOM也更新, 在这个初始化,又会不同阶段默认调用一些函数执行,这些函数就是生命周期的钩子函数; 生命周期钩子函数 生命周期钩子函数,让够让咱们在初始化实例时,添加自己的代码; 生命周期的钩子函数中的this,会默认指向vue的实例; 钩子函数 beforeCreat
详解vue生命周期
weixin_33690963的博客
09-27 329
首先,每个Vue实例在被创建之前都要经过一系列的初始化过程,这个过程就是vue生命周期。首先看一张图吧~这是官方文档上的图片相信大家一定都会很熟悉: 可以看到在vue一整个的生命周期中会有很多钩子函数提供给我们在vue生命周期不同的时刻进行操作, 那么先列出所有的钩子函数,然后我们再一一详解: beforeCreate create...
vue生命周期详解
m_uncle的博客
05-24 377
直接上代码<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>vue生命周期</title> </head> <body> <div id="app"&g
vue生命周期 详解和代码演示
07-12
Vue.js 是一个流行的 JavaScript 框架,它有一套完整的生命周期钩子函数,用于在组件的不同阶段执行特定的操作。下面是 Vue 组件的生命周期钩子函数及其对应的阶段: 1. beforeCreate: 在实例被创建之前调用,此时 data 和 methods 等属性还未初始化。 2. created: 在实例创建完成后调用,此时可以访问 data 和 methods,并可以进行一些初始化操作。 3. beforeMount: 在编译模板之前调用,此时模板还未被渲染成真实的 DOM。 4. mounted: 在编译模板之后调用,此时模板已经被渲染成真实的 DOM,并且可以进行 DOM 操作。 5. beforeUpdate: 在数据更新之前调用,此时可以进行一些更新准备工作。 6. updated: 在数据更新之后调用,此时 DOM 已经被更新。 7. beforeDestroy: 在实例销毁之前调用,此时实例仍然可用。 8. destroyed: 在实例销毁之后调用,此时实例及其所有的监听器都已被移除。 下面是一个简单的示例代码,演示了 Vue 组件的生命周期函数的使用: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue Lifecycle Demo</title> </head> <body> <div id="app"> {{ message }} </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: '#app', data: { message: 'Hello, Vue!' }, beforeCreate() { console.log('beforeCreate hook') }, created() { console.log('created hook') }, beforeMount() { console.log('beforeMount hook') }, mounted() { console.log('mounted hook') }, beforeUpdate() { console.log('beforeUpdate hook') }, updated() { console.log('updated hook') }, beforeDestroy() { console.log('beforeDestroy hook') }, destroyed() { console.log('destroyed hook') } }) </script> </body> </html> ``` 你可以在浏览器中打开该示例,然后在控制台中查看不同生命周期阶段的输出信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 详解.env文件配置---全局环境变量 15799
  • 总结JS继承的六种方式 13566
  • 微信小程序之组件的四种传值方式 12397
  • React中setState方法详解 10185
  • Vue中render函数浅浅详解 8102

分类专栏

  • HTTP
  • react.js 5篇
  • 微信小程序 1篇
  • vue 11篇
  • JS 7篇
  • node.js 2篇
  • git 1篇
  • MySQL 1篇
  • ES6 3篇
  • HTML和CSS 4篇

最新评论

  • async await 是什么?它有哪些作用?

    kkkkinig: 为啥使用同样的代码,我在控制台看不到Promise对象显示

  • 总结JS继承的六种方式

    专业写bug的小女孩: 写的一下子就看明白了呢表情包

  • 详解.env文件配置---全局环境变量

    专注前端研究二十年: 你看看是否引用了

  • 详解.env文件配置---全局环境变量

    只会抄袭别人代码的前端小新: 我的env里面的代码为什么不执行

  • 微信小程序之组件的四种传值方式

    专注前端研究二十年: 是的,多写也没差

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • React Hooks 使用总结
  • 微信小程序之组件的四种传值方式
  • js变量及数据类型
2022年10篇
2021年23篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

4617作文网多周期共振交易系统周易姓名打分免费测试一周公解梦文姓女孩起名大全学习周易怎么入门起名网免费取名 宝宝周易起名造梦西游ol破解版有吗属虎的男宝宝起名周易风水学入门书籍周公解梦游泳璐起名字免费排八字算命周易起名大师谢咏是真的吗根据生辰算命饮食店怎样起名给女孩起个好名字免费2020年鼠年宝宝三月起名大全狗年男孩子起名姓郑起名字王蒙解读红楼梦名字缺水和金起什么名啤酒商标起名造梦西游ol破解版内购破解版解梦梦到被狗咬免费算死命全文小说植保公司起名一周岁宝宝容易出汗李姓女孩起名诗意梦幻捕鱼破解版网上周易取名靠谱吗淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化