Vue3 生命周期钩子函数

一、Vue3生命周期钩子

  • setup() : 开始创建组件之前,在 beforeCreatecreated 之前执行,创建的是 datamethod
  • onBeforeMount() : 组件挂载到节点上之前执行的函数;
  • onMounted() : 组件挂载完成后执行的函数;
  • onBeforeUpdate(): 组件更新之前执行的函数;
  • onUpdated(): 组件更新完成之后执行的函数;
  • onBeforeUnmount(): 组件卸载之前执行的函数;
  • onUnmounted(): 组件卸载完成后执行的函数;
  • onActivated(): 被包含在 <keep-alive> 中的组件,会多出两个生命周期钩子函数,被激活时执行;
  • onDeactivated(): 比如从 A 组件,切换到 B 组件,A 组件消失时执行;
  • onErrorCaptured(): 当捕获一个来自子孙组件的异常时激活钩子函数。

PS: 使用<keep-alive> 组件会将数据保留在内存中,比如我们不想每次看到一个页面都重新加载数据,就可以使用<keep-alive> 组件解决。

二、Vue2.x 和 Vue3.x 生命周期对比

在这里插入图片描述

三、Vue3生命周期钩子函数的简单使用

<template>
  <div>
    <h1>Vue3生命周期钩子函数</h1>
    <h2>响应式拦截数据data的值是:{{msg}}</h2>
    <p><button @click="changeMsg">点击改变msg</button></p>
  </div>
</template>

<script>
import { reactive, onUnmounted, onUpdated, onMounted, toRefs } from 'vue'; // 引入需要的
export default {
  setup () {
    // 初始化项目工作都放在setup中
    console.log("当前应用程序被安装了");
    const state = reactive({ // 定义状态
      msg: '学而时习之', // 定义变量
      changeMsg: () => { // 定义方法
        state.msg = '不亦说乎'
      }
    })
    let timer = 0;
    let count = 0;
    onMounted(() => {
      console.log('页面挂载完成,触发了onMounted钩子函数');
      timer = setInterval(() => {
        console.log('定时器正在运行中', count++)
      }, 1000)
    })
    onUpdated(() => {
      console.log('数据发生了更新,触发了onUpdated钩子函数')
    })
    onUnmounted(() => {
      console.log('页面/组件退出,触发了onUnmounted钩子函数')
      // 如果不清楚,这些异步的行为就会常驻在内存中,一定程度上会造成常驻内存的不必要消耗,造成内存泄露
      clearInterval(timer);
    })
    return {
      ...toRefs(state)
    }
  }
}
</script>
  • 23
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue 2和Vue 3都有一些常用的生命周期钩子函数,但在Vue 3中有一些变化。以下是Vue 2和Vue 3中常用的生命周期钩子函数Vue 2中的生命周期钩子函数: 1. beforeCreate: 实例创建之前调用,此时数据观测(data observer)和事件配置(event/watcher)尚未初始化。 2. created: 实例创建完成后调用,此时已经完成了数据观测(data observer)和事件配置(event/watcher)。 3. beforeMount: 在挂载之前调用,在这个时候模板已经编译完成,但是还未挂载到页面中。 4. mounted: 在挂载完成后调用,此时组件已经被挂载到页面中,可以访问到DOM元素。 5. beforeUpdate: 在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。 6. updated: 在数据更新之后调用,发生在虚拟DOM重新渲染和打补丁之后。 7. beforeDestroy: 在实例销毁之前调用,此时实例仍然完全可用。 8. destroyed: 在实例销毁之后调用,此时实例已经被销毁,所有的事件监听器和子实例都被删除。 Vue 3中的生命周期钩子函数: 1. beforeCreate: 与Vue 2相同,在实例创建之前调用。 2. created: 与Vue 2相同,在实例创建完成后调用。 3. beforeMount: 与Vue 2相同,在挂载之前调用。 4. mounted: 与Vue 2相同,在挂载完成后调用。 5. beforeUpdate: 与Vue 2相同,在数据更新之前调用。 6. updated: 与Vue 2相同,在数据更新之后调用。 7. beforeUnmount: 在组件卸载之前调用,此时组件仍然完全可用。 8. unmounted: 在组件卸载之后调用,此时组件已经被卸载,所有的事件监听器和子组件都被删除。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值