技术文摘
Vue3 中 watch 的使用方法
2025-01-10 20:41:49 小编
Vue3 中 watch 的使用方法
在 Vue3 的响应式系统中,watch 是一个非常实用的函数,它用于响应式地监听一个或多个数据源的变化,并在数据源变化时执行相应的副作用操作。下面将详细介绍它的使用方法。
基本使用
watch 最基本的用法是监听一个响应式数据的变化。例如,有一个响应式的 ref:
<template>
<div>
<input v-model="message">
</div>
</template>
<script setup>
import { ref, watch } from 'vue';
const message = ref('');
watch(message, (newValue, oldValue) => {
console.log(`新值: ${newValue}, 旧值: ${oldValue}`);
});
</script>
在上述代码中,watch 监听了 message 的变化。每当 message 的值发生改变时,回调函数就会被触发,打印出新值和旧值。
监听多个数据源
watch 也可以同时监听多个数据源。可以通过数组的形式传入多个响应式数据。
import { ref, watch } from 'vue';
const count1 = ref(0);
const count2 = ref(0);
watch([count1, count2], (newValues, oldValues) => {
console.log('count1 或 count2 发生了变化');
console.log('新值:', newValues);
console.log('旧值:', oldValues);
});
这里,只要 count1 或 count2 其中任何一个值发生变化,watch 的回调函数就会执行。
深度监听
对于对象类型的响应式数据,默认情况下 watch 只会监听对象的引用变化。如果想要监听对象内部属性的变化,需要使用深度监听。
import { ref, watch } from 'vue';
const user = ref({ name: '张三', age: 25 });
watch(user, (newValue, oldValue) => {
console.log('用户信息发生了变化');
}, { deep: true });
// 修改对象内部属性
user.value.name = '李四';
通过设置 { deep: true } 选项,watch 就能深度监听 user 对象内部属性的变化。
立即执行
有时候我们希望在 watch 一开始就执行一次回调函数,可以使用 immediate 选项。
import { ref, watch } from 'vue';
const number = ref(0);
watch(number, (newValue) => {
console.log('当前数字:', newValue);
}, { immediate: true });
设置 { immediate: true } 后,在 watch 初始化时,回调函数就会立即执行一次,传入当前 number 的初始值。
Vue3 的 watch 函数为我们提供了强大而灵活的响应式监听功能,在实际项目开发中,合理运用这些特性能够高效地处理数据变化带来的各种业务逻辑。
- GitHub 开源 Super Linter 以自动化满足开发者需求
- 新冠病毒促使 AR、MR 和 IoT 技术加速采用
- 轻量级分析工具可替代 Google Analytics
- 面试官:聊聊您对 HashMap 的认识
- 刷题两月,从入门斩获字节 offer,我的模板在 GitHub 获 1.2k 星
- 2020 年 Kubernetes 作为容器编排之王的 12 个有趣数据
- 4 个鲜为人知的 JavaScript 实用技巧
- 如何度过第一份编码工作的艰难阶段
- 为何 Java 开发人员要选择 Go ?
- 主流软件的五大架构模式
- Kubernetes 下 API 网关的两大重要挑战
- 一个重复提交竟遭面试官疯狂批评
- 5 种优质前端开发工具,你在用吗?
- 以下是为您推荐的几个 React 性能优化工具
- Mac 上受 Web 开发者青睐的编程工具