vue3改了几个生命周期函数

vue3改了4个生命周期函数。Vue3组合式api取消了beforeCreated和created钩子函数,采用steup钩子代替,且里面不能使用this。Vue3里面的组件销毁的钩子函数由destroyed和beforeDestroy换成了beforeUnmount和unmounted。

vue3改了几个生命周期函数

本教程操作环境:windows7系统、vue3版,DELL G3电脑。

Vue实例有一个完整的生命周期,也就是从new Vue()、初始化事件(.once事 件)和生命周期、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载等⼀系列过程,称这是Vue的生命周期。

vue应用程序中有4个主要事件(8个钩子):

创建 —- 在组建创建时执行
挂载 —- DOM被挂载时执行
更新 —- 当响应数据被修改时执行
销毁 —-在元素被销毁之前立即执行

立即学习“前端免费学习笔记(深入)”;

Vue2的生命周期

1.png

(1) beforeCreate(创建前)

数据监测(getter和setter)和初始化事件还未开始,此时 data 的响应式追踪、
event/watcher 都还没有被设置

不能访问到data、computed、watch、methods上的方法和数据。

(2)created(创建后)

创建完成后会自动执行函数

(3) beforeMount(挂载前)

在挂载开始之前被调用,相关的render函数首次被调用。

这次Vue开始解析模板,生成虚拟DOM存在内存中,还没有把虚拟DOM转换成真实DOM,插入页面中

(4)mounted(挂载后)

在el被新创建的 vm.$el(就是真实DOM的拷贝)替换,并挂载到实例上去之后调用(将内存中的虚拟DOM转为真实DOM,真实DOM插入页面)。

一般在这个阶段进行:开启定时器,发送网络请求,订阅消息,绑定自定义事件等等

(5)beforeUpdate(更新前)

响应式数据更新时调用,此时虽然响应式数据更新,但是对应的真实 DOM 还没有被渲染(数据是新的,但页面是旧的,页面和数据没保持同步呢)。

登录后复制

(6)updated(更新后)

由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。

调用时,组件 DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环

(7)beforeDestroy(销毁前)

实例销毁之前调用

在这个阶段一般进行关闭定时器,取消订阅消息,解绑自定义事件。

(8)destroyed(销毁后)

实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务端渲染期间不被调用。

分析生命周期

当前的n值是:{{n}}

Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。new Vue({el:'#root',// template:`//
//

当前的n值是:{{n}}

// //
// `,data:{n:1},methods: {add(){console.log('add')this.n++},bye(){console.log('bye')this.$destroy()}},watch:{n(){console.log('n变了')}},beforeCreate() {console.log('beforeCreate')},created() {console.log('created')},beforeMount() {console.log('beforeMount')},mounted() {console.log('mounted')},beforeUpdate() {console.log('beforeUpdate')},updated() {console.log('updated')},beforeDestroy() {console.log('beforeDestroy')},destroyed() {console.log('destroyed')},})

登录后复制

常用的生命周期钩子:
1.mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。
2.beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】
关于销毁Vue实例:
(1)销毁后借助Vue开发者工具看不到任何信息。
(2)销毁后自定义事件会失效,但原生DOM事件依然有效。
(3)一般不会在beforeDestroy操作数据,因为即便操作数据,也不会再触发更新流程了。

Vue3的生命周期

2.png

(1) onBeforeMount

在挂载之前被调用,渲染函数render首次被调用

(2) onMounted

组件挂载时调用

(3) onBeforeUpdate

数据更新时调用,发生在虚拟DOM打补丁之前。

(4) onUpdated

因数据更改导致的虚拟DOM重新渲染和打补丁时调用

(5) onBeforeUnmount

在卸载组件实例之前调用,此阶段的实例依旧是正常的。

(6) onUnmounted

卸载组件实例后调用,调用此钩子时,组件实例的所有指令都被解除绑定,所有事件侦听器都被移除,所有子组件实例被卸载。

vue2与vue3在生命周期的区别

vue2 vue3

beforeCreatesetup() 开始创建组件之前,创建的是data和methodcreatedsetup()beforeMountonBeforeMount 组件挂载到节点上之前执行的函数。mountedonMounted 组件挂载完成后执行的函数beforeUpdateonBeforeUpdate 组件更新之前执行的函数。updatedonUpdated 组件更新完成之后执行的函数。beforeDestroyonBeforeUnmount 组件挂载到节点上之前执行的函数。destroyedonUnmounted 组件卸载之前执行的函数。

总结: 

1、Vue3 组合式api取消了 beforeCreated 和 created 钩子函数 , 采用steup钩子代替 且里面不能使用 this 

2、Vue3里面的组件销毁的钩子函数换成了 beforeUnmount 和 unmounted 之前是 destroyed和beforeDestroy 但是要注意 如果Vue3 使用 Vue2 的选择式写法 之前的钩子函数还是可以使用

3、Vue3的组合式api生命周期函数 要比Vue2 选择式 api 的生命周期多个前缀 on ,而且要 import 单独引入

相关推荐:vue.js视频教程

以上就是vue3改了几个生命周期函数的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2921905.html

(0)
上一篇 2025年3月11日 18:33:09
下一篇 2025年2月26日 13:22:51

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue插槽解决什么问题

    vue插槽解决的问题:引入的子组件标签中间不允许写内容的。插槽(Slot)是vue为组件的封装者提供的能力;允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽;可以把插槽认为是组件封装期间,为用户预留的内容的占位符。 本教程…

    2025年3月11日 编程技术
    200
  • vue的优缺点是什么?为什么使用它?

    优缺点是:简单、快速、强大、对模块友好;但不支持IE8,且对于搜索引擎不友好,会影响seo。使用原因:Vue是一款能降低开发成本、提升开发效率的工具,它能帮助开发者从繁琐的DOM操作中解脱出来;开发中设定好正确视图和数据的规则后,只需要关注…

    2025年3月11日
    200
  • vue项目中怎么用echarts

    使用方法:1、用“yarn add echarts”或“npm install echarts -S”或“cnpm install echarts -S”命令安装Echarts;2、在main.js中用“import echarts fro…

    2025年3月11日 编程技术
    200
  • vue中token用法是什么

    vue中token是在服务端产生的一串字符串,以作客户端进行请求的一个令牌;其使用方法如:1、封装操作localstorage本地存储的方法;2、在封装好storage后,将其挂载到全局组件中;3、在“request.js”里放入“toke…

    2025年3月11日
    200
  • vue中怎么增加一个路由

    vue中增加一个路由的方法:1、搭建好Vue脚手架;2、打开项目文件夹;3、在文件目录src中的component下创建一个新的vue页面,写入测试代码;4、打开src下的router目录下的index.js文件,增加新的路由代码即可。 本…

    2025年3月11日 编程技术
    200
  • vue不加空格会报错怎么回事

    vue不加空格会报错的5种原因:1、用双斜线注释时,双斜线的后面需要加空格,否则会报错;2、引入组件或者API时,逗号后面需要空格,开头结尾距离花括号也有空格;3、default与括号之间没有加空格导致报错;4、代码尾部不能有空格;5、函数…

    2025年3月11日 编程技术
    200
  • vue可以做同步吗

    vue可以做同步,vue实现同步的方法:1、创建一个vue示例文件;2、通过“data(){return {userInfo: {id: ”,username: ”,password:”,avatar: …

    2025年3月11日 编程技术
    200
  • vue跳转不打开新窗口怎么办

    vue跳转不打开新窗口的解决办法:1、通过“console.log(‘val.route’,val.route)”跳转对应页面;2、通过“this.$router.push(val.route)”直接跳转路由,并在当…

    2025年3月11日
    200
  • vue获取不到id属性怎么办

    vue获取不到id属性是因为将getElementById用在了“created()”钩子函数中,而Vue尚未完成挂载;其解决办法就是将“created() {let serachBox = document.getElementById(…

    2025年3月11日
    200
  • 怎么使用vue实现柱形图

    使用vue实现柱形图的方法:1、创建div属性为“”;2、通过“mounted(){this.fetchData()window.addEventListener(‘resize’,()=>{if (this.…

    2025年3月11日
    200

发表回复

登录后才能评论