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

Vue3 watch使用

在Vue 3中,监听数据变化主要有以下几种方式:官网👉🏻 侦听器 | Vue.js

监听一个ref

const count = ref(0);
watch(count, (newValue, oldValue) => {console.log(`count值从${oldValue}变成了${newValue}`);
});

监听一个reactive对象的属性

const state = reactive({ count: 0 });
watch(
() => state.count,
(newValue, oldValue) => {console.log(`count值从${oldValue}变成了${newValue}`);
});

监听多个数据源

watch(
[() => state.count, count], // 可以同时监听ref和reactive的属性
([newCount1, newCount2], [oldCount1, oldCount2]) => {// 处理变化
});

深度监听和立即执行

const state = reactive({person: { name: 'Alice',age: 30}
});watch(
() => state.person,
(newValue, oldValue) => {// 注意:对于对象或数组,新值和旧值相同,除非使用深度监听console.log('person变化了', newValue);
},
{ deep: true, immediate: true } // 深度监听,并且立即执行一次
);

使用watchEffect

import { ref, watchEffect } from 'vue';
const count = ref(0);
watchEffect(() => {console.log('count的值是:', count.value);
});// 停止监听:
const stop = watchEffect(() => {// ...
});

使用计算属性`computed`

import { ref, computed } from 'vue';
const count = ref(0);
const doubleCount = computed(() => count.value * 2);
// 计算属性默认是只读的,如果需要可写,可以提供一个setter
const writableComputed = computed({get: () => count.value * 2,set: (val) => {count.value = val / 2;
}});

在Vue 3中,监听数据变化主要有以下几种方式:

1. 使用`watch`函数:用于监听单个或多个响应式数据源,并在数据变化时执行回调函数。

2. 使用`watchEffect`函数:立即执行传入的函数,并响应式追踪其依赖,当依赖变化时重新运行该函数。

3. 使用计算属性`computed`:当依赖的响应式状态发生变化时,计算属性会自动重新计算。

4. 使用`ref`和`reactive`创建的响应式变量:直接修改这些变量,视图会自动更新。

http://www.xdnf.cn/news/963739.html

相关文章:

  • 路由器欧盟EN 18031网络安全认证详细解读
  • Css实现悬浮对角线边框动效
  • 【Trace32专栏】使用trace32 定位分析log_buf问题
  • 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
  • ESP8266自动浇水系统
  • 边缘计算医疗风险自查APP开发方案
  • i++与++i的区别
  • 光影魔术手 4.7.1 | 经典照片美化软件
  • Java八股文——JVM「类加载篇」
  • 论文分类打榜赛Baseline(2):InternLM昇腾硬件微调实践
  • React---day12
  • 【QT】自动更新库QSimpleUpdater使用实例封装
  • golang学习随便记x[2,3]-字符串处理与正则表达式
  • 基于Java项目的Karate UI测试
  • Uniapp如何适配HarmonyOS5?条件编译指南以及常见的错误有哪些?
  • Spring @Autowired解析
  • NoSQL数据库技术详解:Redis与MongoDB的应用与实践
  • MODERNTCN:一种面向通用时间序列分析的现代纯卷积结构
  • 如何保障服务器的安全
  • 高防服务器中高防和硬防之间的区别
  • ASP4644电源芯片FB引脚:从原理到实战
  • 【FFmpeg学习(1)】图像表示
  • php利用createSheet生成excel表格(控制行高列宽、文本自动换行及表头字体样式)
  • Windows 命令行大全
  • JetBrains IntelliJ IDEA插件推荐
  • [创业之路-415]:经济学 - 价值、使用价值、交换价值的全面解析
  • CentOS7下的大数据NoSQL数据库HBase集群部署
  • 「多模态融合(ECG+PPG联合变异性分析)——ECG信号处理-第十六课」2025年6月10日
  • 屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
  • 校园二手交易平台(微信小程序版)