Vue.js 新的生命周期钩子:`onMounted`, `onUpdated` 等

devtools/2025/2/5 10:37:56/

Vue.js 新的生命周期钩子:onMounted, onUpdated

今天我们来聊聊 Vue 3 中的生命周期钩子,特别是 onMountedonUpdated 等。如果你对如何在 Vue 3 的组合式 API(Composition API)中使用这些钩子感到困惑,那么这篇文章将为你解答。

什么是生命周期钩子?

生命周期钩子是 Vue 在组件生命周期的特定阶段自动调用的函数。它们允许开发者在组件的创建、挂载、更新和销毁等阶段执行特定的操作。

Vue 3 中的生命周期钩子

在 Vue 3 中,随着组合式 API 的引入,生命周期钩子的使用方式也有所变化。以下是常用的生命周期钩子及其对应的调用时机:

  • onBeforeMount:在组件挂载到 DOM 之前调用。
  • onMounted:在组件挂载到 DOM 之后调用。
  • onBeforeUpdate:在组件更新之前调用。
  • onUpdated:在组件更新之后调用。
  • onBeforeUnmount:在组件卸载之前调用。
  • onUnmounted:在组件卸载之后调用。

如何在组合式 API 中使用生命周期钩子?

在组合式 API 中,这些钩子函数需要在 setup() 函数中同步调用。让我们通过一个示例来了解如何使用这些钩子。

示例:

<template><div><p>{{ message }}</p><button @click="updateMessage">更新消息</button></div>
</template><script setup>
import { ref, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue';const message = ref('Hello, Vue!');const updateMessage = () => {message.value = 'Hello, World!';
};onBeforeMount(() => {console.log('组件即将挂载');
});onMounted(() => {console.log('组件已挂载');
});onBeforeUpdate(() => {console.log('组件即将更新');
});onUpdated(() => {console.log('组件已更新');
});onBeforeUnmount(() => {console.log('组件即将卸载');
});onUnmounted(() => {console.log('组件已卸载');
});
</script>

在这个示例中,我们定义了一个简单的组件,并在 setup() 函数中使用了多个生命周期钩子来监听组件的不同生命周期阶段。每个钩子都会在相应的阶段打印一条消息到控制台。

注意事项

  • 调用时机:所有的生命周期钩子函数必须在 setup() 函数中同步调用。
  • 服务端渲染:某些钩子函数(如 onMountedonUpdatedonUnmounted)在服务端渲染期间不会被调用。
  • 避免状态修改:不要在 onUpdated 钩子中修改组件的状态,这可能会导致无限的更新循环。

总结

在 Vue 3 的组合式 API 中,生命周期钩子的使用变得更加直观和灵活。通过在 setup() 函数中导入并调用相应的钩子函数,我们可以轻松地在组件的不同生命周期阶段执行自定义逻辑。


http://www.ppmy.cn/devtools/156250.html

相关文章

vim操作简要记录

操作容易忘记&#xff0c;记录一下基本使用的 :wq保存退出 :w :q :q! :wq! i I a A 方向键 h左 j下 k上 l右 dd删除方行&#xff08;这其实是剪切行操作&#xff0c;不过一般用作删除&#xff0c;长按可删除&#xff0c;不过按.执行上一次操作删除更快&#xff09; .执行上…

什么是REStful API,其设计核心原则(core principle)是什么

RESTful API(Representational State Transfer API)是一种基于Web的架构风格,它通过HTTP协议提供客户端与服务器之间的交互。RESTful API基于资源的概念,资源通常通过URL表示,客户端与服务器之间通过请求和响应交换数据。它常用于构建轻量级的、可扩展的网络服务。 RESTf…

力扣 45. 跳跃游戏 II

&#x1f517; https://leetcode.cn/problems/jump-game-ii 题目 给一个数组 nums&#xff0c;最开始在 index 0&#xff0c;每次可以跳跃的区间是 0-nums[i]保证可以跳到 nums 的末尾&#xff0c;返回跳到末尾的最小步骤 思路 题解是贪心&#xff0c;选择每次可以跳到的最…

上位机知识篇---GitGitHub

文章目录 前言Git&GitHub是什么&#xff1f;GitGitHub Git和GitHub的区别定位功能使用方式开源协作 Git常用命令操作1. 配置2. 仓库操作3. 文件操作4. 分支与合并5.远程操作6.撤销更改7.查看历史 GitHub常用操作1.创建仓库2.Fork仓库3.Pull Request4.Issue跟踪5.代码审查 G…

list容器(详解)

list的介绍及使用&#xff08;了解&#xff0c;后边细讲&#xff09; 1.1 list的介绍&#xff08;双向循环链表&#xff09; https://cplusplus.com/reference/list/list/?kwlist&#xff08;list文档介绍&#xff09; 1. list是可以在常数范围内在任意位置进行插入和删除的序…

Android 开发:新的一年,新的征程

回顾 2023 年&#xff0c;Android 开发领域可谓成果斐然。这一年&#xff0c;Android 系统不断迭代&#xff0c;新技术、新工具层出不穷&#xff0c;为开发者们带来了前所未有的机遇与挑战。如今&#xff0c;我们站在新的起点&#xff0c;怀揣着对技术的热爱与追求&#xff0c;…

LeetCode--347. 前 K 个高频元素/Golang中的堆(container/heap)

例题链接-前k个高频元素 前言 以前都是用的C写算法题&#xff0c;最近也想熟悉一下golang的数据结构&#xff0c;故来一篇题解堆分析。 正文 这里重点不在分析题目&#xff0c;在于golang中的 container/heap 对于内部实现逻辑有兴趣的可以去看看源码。 这里先给出题解的代…

【数据结构】(3)包装类和泛型

一、包装类 1、什么是包装类 将基础类型包装成的类就是包装类。由于基础类型不是继承 Object 类的类&#xff0c;所以在泛型不能直接支持基础类型&#xff0c;为了解决这个问题&#xff0c;就需要把基础类型转换为对应的包装类。 基础类型对应的包装类 基础类型包装类byteByte…