首页 > 其他分享 >vue3API /watch

vue3API /watch

时间:2024-09-14 09:21:16浏览次数:15  
标签:console log vue3API watch const 观察 ref

1.watch侦听

在 Vue 3 中,watch 是一个用于观察和响应 Vue 实例上的数据变动的函数。它可以用来观察几乎所有类型的数据,包括 refreactive、响应式对象的属性,甚至是计算属性。当被观察的数据变化时,watch 会触发一个回调函数。

<script setup>
import { ref, watch } from 'vue';

const count = ref(0);

watch(count, (newValue, oldValue) => {
  console.log(`count changed from ${oldValue} to ${newValue}`);
});
</script>

特点

  • 立即执行watch 会在开始观察时立即执行一次回调函数,除非你设置 { immediate: false }

  • 停止观察watch 返回一个停止观察的函数,你可以在组件卸载或其他适当的时候调用它来停止观察。

  • 支持复杂表达式watch 可以接受一个返回值作为观察的目标,这允许你观察更复杂的表达式或多个源。

高级用法

观察多个源

<script setup>
import { ref, watch } from 'vue';

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

watch([firstName, lastName], ([newFirstName, newLastName], [oldFirstName, oldLastName]) => {
  console.log(`Name changed from ${oldFirstName} ${oldLastName} to ${newFirstName} ${newLastName}`);
});
</script>

观察对象的属性

<script setup>
import { reactive, watch } from 'vue';

const person = reactive({
  name: 'John',
  age: 30
});

watch(() => person.name, (newName, oldName) => {
  console.log(`Name changed from ${oldName} to ${newName}`);
});

watch(() => person.age, (newAge, oldAge) => {
  console.log(`Age changed from ${oldAge} to ${newAge}`);
});
</script>

停止观察

<script setup>
import { ref, watch, onUnmounted } from 'vue';

const count = ref(0);

const stopWatching = watch(count, (newValue, oldValue) => {
  console.log(`count changed from ${oldValue} to ${newValue}`);
});

onUnmounted(() => {
  stopWatching(); // 组件卸载时停止观察
});
</script>

注意事项

  • 避免在回调中直接修改被观察的数据:这可能会导致无限循环或难以追踪的错误。

  • 使用 { immediate: true }:如果你需要在开始观察时立即触发回调,可以设置 { immediate: true }

  • 清理资源:使用 watch 创建的副作用(如定时器、订阅等)应该在组件卸载时清理,以避免内存泄漏。

指定观察

watch 函数可以接受一个或多个响应式引用、计算属性或是一个返回响应式数据的函数作为第一个参数。你可以观察单个数据源,也可以同时观察多个数据源。

观察单个数据源
import { ref, watch } from 'vue';

const state = ref(0);

watch(state, (newValue, oldValue) => {
  console.log(`Value changed from ${oldValue} to ${newValue}`);
});

观察多个数据源

import { ref, watch } from 'vue';

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

watch([firstName, lastName], ([newFirstName, newLastName], [oldFirstName, oldLastName]) => {
  console.log(`Name changed from ${oldFirstName} ${oldLastName} to ${newFirstName} ${newLastName}`);
});

深度观察

默认情况下,watch 仅观察对象的顶层数据。如果你需要观察一个对象的深层属性变化,你可以使用 { deep: true } 选项来进行深度观察。

import { reactive, watch } from 'vue';

const person = reactive({
  name: 'John Doe',
  details: {
    age: 30,
    address: '123 Main St'
  }
});

watch(() => person.details, (newDetails, oldDetails) => {
  console.log(`Details changed`, newDetails);
}, { deep: true });

标签:console,log,vue3API,watch,const,观察,ref
From: https://blog.csdn.net/ededabo/article/details/142176847

相关文章

  • 使用Vue3.5的onWatcherCleanup封装自动cancel的fetch函数
    前言在欧阳的上一篇这应该是全网最详细的Vue3.5版本解读文章中有不少同学对Vue3.5新增的onWatcherCleanup有点疑惑,这个新增的API好像和watchAPI回调的第三个参数onCleanup功能好像重复了。今天这篇文章来讲讲新增的onWatcherCleanup函数的使用场景:封装一个自动cancel的fetch函......
  • class 4: vue.js 3监听器 watch
    某些情况下需要监听某个响应式数据的变化,这时就需要使用监听器(watch)来实现了watch的使用语法如下选项:watch类型:{[key:string]:string|Function|Object|Array}详解:watch属性是一个对象,该对象的键(key)是需要观察的表达式,值(value)可以是回调函数、方法名等。Vu......
  • Intel Watchdog Timer Driver (Intel WDT) 是一种硬件监控驱动程序,用于系统监控和故障
    IntelWatchdogTimerDriver(IntelWDT)是一种硬件监控驱动程序,用于系统监控和故障恢复。这个驱动程序的主要功能是提供硬件级的看门狗定时器,用于监测系统的健康状况并在系统出现故障时进行恢复或重启。以下是关于IntelWDT驱动程序的一些关键点:1. 功能与目的硬件监控:I......
  • vue3中computed和watch的使用
    一computd计算属性computed是Vue3中用于创建计算属性的功能。它允许你定义基于响应式数据的动态值,这些值会在其依赖的数据发生变化时自动更新。使用场景依赖于其他响应式数据的计算结果:你可以创建一个计算属性,其值依赖于其他响应式数据,并在这些数据变化时自动更新。......
  • Python自动化批量创建CloudWatch告警监控Amazon OpenSearch Service数据传输
    在使用AmazonOpenSearchService时,确保数据传输的可靠性和完整性至关重要。本文将介绍如何使用Python脚本自动批量创建CloudWatch告警,以监控多个KinesisDataFirehose向OpenSearch传输数据的成功率。为什么要监控数据传输成功率?及时发现问题:当数据传输出现异常时,......
  • computed计算属性及方法对比和循环遍历统计以及watch和watchEect监听的用法
    1.computed计算属性及方法对比1.了解computed计算属性和用法在我们的一些应用中可以看的应用会给我们提供一些计算类的功能比如取名,它会给你提供两个输入框,然后在你给这两个输入框输入值的时候会在下方生成你输入这个两个值的结合值,就比如你先输入了一个姓氏,然后输入一个名,下......
  • .NET 开源实时监控系统 - WatchDog
    目录前言项目介绍功能特点项目技术栈工作原理1、支持.NET版本2、下载源码安装与配置1、WatchDog安装2、WatchDog服务注册3、添加异常记录器4、设置自动清除日志(可选)5、设置日志记录到外部数据库(可选)6、设置访问日志的账号密码7、配置说明和示例8、记录消息/......
  • .NET 开源实时监控系统 - WatchDog
    前言在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要。实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间。本文将介绍一个名为WatchDog的.NET开源实时应用监控系统,它可以帮助我们轻松实现对.NET应用的实......
  • Zookeeper的watch机制是如何工作的?
    ZooKeeperWatch概述ZooKeeperWatch机制类似于Java设计模式中的观察者模式或者监听模式,唯一的不同是不再基于线程间通信,而是基于进程间通信。ZooKeeperWatch机制是指,客户端在所有的读命令上告知服务端:这个节点或者子节点变化时通知我,具体来说,支持的写操作有:getData......
  • vue3 响应式 API:watch()、watchEffect()
    watch()基本概念watch()用于监视响应式数据的变化,并在数据变化时执行相应的回调函数。可以监视单个响应式数据、多个响应式数据的组合,或者一个计算属性。返回值返回一个函数,调用这个函数可以停止监视。特点watch()默认是懒侦听的,即仅在侦听源发生变化时才执行回调函......