当前位置: 首页 > article >正文

watch方法解析

watch 方法解释

在 Vue.js 中,watch 是一个用于监听响应式数据变化的 API。当被监听的数据发生变化时,watch 会执行指定的回调函数。它非常适合处理需要在数据变化时执行某些逻辑的场景。


watch 的基本语法

watch(source, callback, options)
  • source:需要监听的响应式数据。可以是一个 refreactive 对象、计算属性,或者一个返回值的函数。
  • callback:当 source 发生变化时执行的回调函数。它接收两个参数:
    • newValue:变化后的新值。
    • oldValue:变化前的旧值。
  • options:可选的配置对象,常用属性包括:
    • immediate:是否在监听开始时立即执行回调函数。
    • deep:是否深度监听对象或数组内部的变化。

watch 的示例

1. 监听 ref 的变化
import { ref, watch } from 'vue';

const count = ref(0);

watch(count, (newValue, oldValue) => {
  console.log(`count 从 ${oldValue} 变为 ${newValue}`);
});

count.value++; // 输出:count 从 0 变为 1

2. 监听 reactive 对象的变化
import { reactive, watch } from 'vue';

const user = reactive({ name: 'Alice', age: 25 });

watch(
  () => user.name, // 监听 user.name
  (newValue, oldValue) => {
    console.log(`用户名从 ${oldValue} 变为 ${newValue}`);
  }
);

user.name = 'Bob'; // 输出:用户名从 Alice 变为 Bob

3. 监听多个数据的变化
import { ref, watch } from 'vue';

const firstName = ref('John');
const lastName = ref('Doe');

watch(
  [firstName, lastName], // 监听多个数据
  ([newFirstName, newLastName], [oldFirstName, oldLastName]) => {
    console.log(`姓名从 ${oldFirstName} ${oldLastName} 变为 ${newFirstName} ${newLastName}`);
  }
);

firstName.value = 'Jane'; // 输出:姓名从 John Doe 变为 Jane Doe

4. 深度监听对象或数组
import { reactive, watch } from 'vue';

const user = reactive({ name: 'Alice', address: { city: 'Beijing' } });

watch(
  () => user, // 监听整个 user 对象
  (newValue, oldValue) => {
    console.log('user 对象发生变化', newValue);
  },
  { deep: true } // 深度监听
);

user.address.city = 'Shanghai'; // 输出:user 对象发生变化 { name: 'Alice', address: { city: 'Shanghai' } }

5. 立即执行回调
import { ref, watch } from 'vue';

const count = ref(0);

watch(
  count,
  (newValue, oldValue) => {
    console.log(`count 从 ${oldValue} 变为 ${newValue}`);
  },
  { immediate: true } // 立即执行回调
);

// 输出:count 从 undefined 变为 0

watch 的使用场景

  1. 数据变化时执行异步操作:例如监听搜索关键字的变化,触发搜索请求。
  2. 数据变化时更新其他状态:例如监听表单字段的变化,更新表单的验证状态。
  3. 深度监听复杂对象:例如监听一个嵌套对象或数组的变化,执行相应的逻辑。

总结

  • watch 是 Vue.js 中用于监听响应式数据变化的核心 API。
  • 它可以监听 refreactive、计算属性等数据的变化,并执行相应的逻辑。
  • 通过 immediatedeep 选项,可以控制监听的行为。
  • 在组件开发中,watch 常用于处理数据变化时的异步操作、状态更新等场景。
原文地址:https://blog.csdn.net/SUNGUOGUO1/article/details/146427049
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/595861.html

相关文章:

  • win32汇编环境,网络编程入门之八
  • 20250319在荣品的PRO-RK3566开发板的buildroot系统下使用集成的QT应用调试串口UART3
  • 深度学习与计算机视觉方向
  • docker、docker-compose常用命令
  • 【C#高级编程】—表达式树详解
  • k8s自动弹性伸缩之HPA实践
  • 网络编程——套接字、创建服务器、创建客户端
  • 挑战用AI替代我的工作——从抢券困境到技术突破
  • C# System.Text.Encoding 使用详解
  • 支持向量机(Support Vector Machine)基础知识1
  • 普通鼠标的500连击的工具来了!!!
  • 【AIGC】Win10系统极速部署Docker+Ragflow+Dify
  • 最新!Ubuntu Docker 安装教程
  • C 语 言 --- 扫 雷 游 戏(初 阶 版)
  • 系统思考—链接组织效能提升与问题解决
  • OSPF 协议详解:从概念原理到配置实践的全网互通实现
  • 我们如何自己去做软件的等保测评?
  • STM32U575RIT6单片机(五)
  • Python中数据结构元组详解
  • C++20 新特性:深入理解 `std::basic_string<char8_t>` 和 `char8_t`