vue生命周期

1、vue生命周期是什么

      vue实例从开始创建、初始化数据、编译模版、挂载DOM—渲染、更新—渲染、卸载等一系列过程,我们称这是vue的生命周期,各个阶段有相对于的事件钩子。

2、生命周期各个阶段的钩子函数

生命周期钩子组件状态最佳实践
beforeCreate实例初始化之后,this指向创建的实例,不能访问到data、computed、watch、methods上的方法和数据常用于初始化非响应式变量
created实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到$el属性,$ref属性内容为空数组常用于简单的ajax请求,页面的初始化
beforeMount在挂载开始之前被调用,beforeMount之前,会找到对应的template,并编译成render函数-
mounted实例挂载到DOM上,此时可以通过DOM API获取到DOM节点,$ref属性可以访问常用于获取VNode信息和操作,ajax请求
beforeupdate响应式数据更新时调用,发生在虚拟DOM打补丁之前适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器
updated虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,可执行依赖于DOM的操作避免在这个钩子函数中操作数据,可能陷入死循环
beforeDestroy实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例常用于销毁定时器、解绑全局事件、销毁插件对象等操作
destroyed实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁-

created与mounted请求ajax的区别:前者页面视图未出现,如果请求信息过多,页面会长时间处于白屏状态

3、不同情况下的生命周期 

(1)单个组件生命周期 

          首次进入页面/重新加载页面/初始化组件时,执行beforeCreate/created/beforeMount/mounted钩子函数

          改变响应式变量值时,触发视图更新,执行beforeUpdate/updated钩子函数,可执行多次,只要响应式变量改变就会执行

          切换组件/离开当前页面(组件未缓存)执行beforeDestory/destoryed钩子函数 

(2)父子组件生命周期

         初始化执行顺序:

            (父)beforeCreate—(父)created—(父)beforeMount—

            (子)beforeCreate—(子)created—(子)beforeMount—(子)mounted—

            (父)mounted—(父)beforeUpdate—(父)updated

         子组件data变化:

            (子)beforeUpdate—(子)updated   

         父组件data变化:

            (父)beforeUpdate—(父)updated

         props变化:

            (父)beforeUpdate—(子)beforeUpdate—(子)updated—(父)updated

         子组件销毁:

            (子)beforeDestory—(子)destoryed   

         父组件销毁:

            (父)beforeDestory—(子)beforeDestory—(子)destoryed—(父)destoryed

          仅当子组件完成挂载后,父组件才会挂载

          当子组件完成挂载后,父组件会主动执行一次beforeUpdate/updated钩子函数(仅首次)

          父子组件在data变化中是分别监控的,props中的数据是关联的

          销毁父组件时,先将子组件销毁后才销毁父组件

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值