vue2与vue3中的生命周期执行顺序有什么区别


本文小编为大家详细介绍“vue2与vue3中的生命周期执行顺序有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue2与vue3中的生命周期执行顺序有什么区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue2中执行顺序 beforeCreate=>created=>beforeMount =>mounted=>beforeUpdate =>updated=>beforeDestroy=>destroyedvue3中执行顺序 setup=>onBeforeMount=>onMounted=>onBeforeUpdate=>onUpdated=>onBeforeUnmount=>onUnmounted对应关系vue2->vue3beforeCreate->setupcreated -> setupbeforeMount -> onBeforeMountmounted -> onMountedbeforeUpdate -> onBeforeUpdateupdated -> onUpdatedbeforeDestroy -> onBeforeUnmountdestroyed -> onUnmounted其中 vue3中的setup相当于vue2中beforeCreate 与created 但是的执行在beforeCreate 与created之前,所以setup无法使用 data 和 methods 中的数据和方法,即无法操作this,setup中的this等于 undefined,又因为setup中创建的变量与方法最后都要通过return返回出去,所以setup中的程序只能是同步的,而不能是异步,除非return 后面只接受一个异步对象,对象返回setup内定义的变量与方法,然后父组件使用Suspense标签包裹异步组件;vue3中 如果要使用vue2的beforeDestroy与destroyed需要把名称分别改为beforeUnmount,unmounted如果vue3中同时使用了vue2的写法,vue3的写法会优先执行;父组件App.vue子组件child.vue运行起来的显示效果进入页面 按f12 打开调试 刷新页面可以看出vue3中setup执行在beforeCreate与created前面;onBeforeMount执行在beforeMount前面;onMounted执行在mounted前面;点击 更新name可以看出vue3中onBeforeUpdate执行在beforeUpdate前面;onUpdated执行在updated前面;点击 切换child子组件的显示可以看出vue3中onBeforeUnmount执行在beforeDestroy前面;onUnmounted执行在destroyed前面;生命周期:在创建一个vue实例时,会经历一系列的初始化免费云主机域名过程(Vue实例从创建到销毁的过程),这个过程就是vue的生命周期。Vue提供给开发者的一系列的回调函数,方便我们添加自定义的逻辑,Vue的生命周期从创建到销毁,重要的节点挂载数据更新。创建阶段 beforeCreate、created挂载渲染页面阶段 beforeMount、mounted更新阶段 beforeUpdate、updated卸载阶段 beforeDestory、destoryed献上一波代码,看下各周期钩子函数的执行顺序:(1)创建阶段:初始化事件,进行数据的观测new Vue({}) 创建一个空的实例对象,这个对象上只有生命周期函数和一些默认事件在beforeCreate时,$el和data都未初始化created 执行,完成了对data的初始化,通过编译将 template 模板转换成渲染函数( render ) ,执行渲染函数就可以得到一个虚拟节点树(内存中)先检查 template是否存在 如果存在模板编译成render函数,没有将外部html作为模板渲染。综合排名优先级:render函数选项 > template选项 > outer HTML.(2)挂载阶段为vue实例添加$el成员,替换挂载的DOM成员其中在beforeMount时,初始化el和data,但el和data,但el和data,但el还是使用{{message}}进行占位mounted执行时,将message的值进行渲染(3)更新阶段:触发对应组件的重新渲染data 被改变时触发生命周期函数 beforeUpdate 执行,data是最新的,页面还未更新(旧的页面)根据最新的 data 重新渲染虚拟 DOM,并挂载到页面上,完成 Model 到 View 的更新updated 执行,此时 data 和页面都是最新的(4)销毁阶段beforeDestroy钩子函数在实例销毁之前调用。在这一步,实例仍然完全可用。destroyed钩子函数在Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。主要可以从以下几种情况分析:(1)创建过程:父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted(2)组件的内部更新:子组件的内部更新过程是:子beforeUpdate->子updated同理父组件的内部更新过程也是:父beforeUpdate->父updated(3)组件之间的更新:当子组件使用emit修改父组件状态时,刚好这个状态又绑定在子组件的props上,更新过程是:父beforeUpdate->子beforeUpdate->子updated->父updated(4)父子组件销毁:父组件被销毁时子组件也同时被销毁,销毁的钩子过程是:父beforeDestroy->子beforeDestroy->子destroyed->父destroyed父子组件完整的生命周期图如下所示:从上图可以看出,在父兄子组件挂载前,各组件的实例已经初始化完成。子组件挂载完成后,父组件还未挂载。所以组件数据回显的时候,在父组件mounted中获取api的数据,子组件的mounted是拿不到的。仔细看看父子组件生命周期钩子的执行顺序,会发现created这个钩子是按照从外内顺序执行,所以回显场景的解决方案是:在created中发起请求获取数据,依次在子组件的created中会接收到这个数据。Vue父子组件生命周期钩子的执行顺序遵循:从外到内,然后再从内到外,不管嵌套几层深,也遵循这个规律。跳转不同页面和part2是相同的原理,从第一个页面(index)跳转到下一个页面(secondIndex)时,回先初始化secondIndex,之后在执行index页面的销毁阶段,最后secondIndex挂载完成.读到这里,这篇“vue2与vue3中的生命周期执行顺序有什么区别”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: html5支不支持wmv格式

今天小编给大家分享一下html5支不支持wmv格式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 html5不支持wmv视频格式。html5提供…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 04/02 19:21
Next 04/02 19:21

相关推荐