网络编程
位置:首页>> 网络编程>> JavaScript>> VUE3中watch监听使用实例详解

VUE3中watch监听使用实例详解

作者:莫循瑾木  发布时间:2024-05-29 22:42:16 

标签:vue3,watch,监听

watch介绍

vue中watch用来监听数据的响应式变化.获取数据变化前后的值

watch的完整入参

watch(监听的数据,副作用函数,配置对象)
watch(data, (newData, oldData) => {}, {immediate: true, deep: true})

watch监听的不同情况

创建响应式数据

import { ref, watch, reactive } from "vue";
let name = ref("moxun");
let age = ref(18);
let person = reactive({
 Hobby: "photo",
 city: {
   jiangsu: {
     nanjing: "雨花台",
   },
 },
});

1 监听单个refimpl数据

watch(name, (newName, oldName) => {
 console.log("newName", newName);
});

2 监听多个refimpl数据

方式一:vue3允许多个watch * 存在

watch(name, (newValue, oldValue) => {
 console.log("new", newValue, "old", oldValue);
});
watch(age, (newValue, oldValue) => {
 console.log("new", newValue, "old", oldValue);
});

方式二:将需要监听的数据添加到数组

watch([name, age], (newValue, oldValue) => {
 // 返回的数据是数组
 console.log("new", newValue, "old", oldValue);
});

3 监听proxy数据

注意

1.此时vue3将强制开启deep深度监听

2.当监听值为proxy对象时,oldValue值将出现异常,此时与newValue相同

// 监听proxy对象
watch(person, (newValue, oldValue) => {
 console.log("newValue", newValue, "oldValue", oldValue);
});

4 监听proxy数据的某个属性

需要将监听值写成函数返回形式,vue3无法直接监听对象的某个属性变化

watch(
 () => person.Hobby,
 (newValue, oldValue) => {
   console.log("newValue",newValue, "oldvalue", oldValue);
 }
);

注意

当监听proxy对象的属性为复杂数据类型时,需要开启deep深度监听

watch(
 () => person.city,
 (newvalue, oldvalue) => {
   console.log("person.city newvalue", newvalue, "oldvalue", oldvalue);
 },{
   deep: true
 }
);

5 监听proxy数据的某些属性

watch([() => person.age, () => person.name], (newValue, oldValue) => {
 // 此时newValue为数组
 console.log("person.age", newValue, oldValue);
});

来源:https://blog.csdn.net/moxunjinmu/article/details/123219081

0
投稿

猜你喜欢

  • 实践是检验真理的唯一途径,本篇只是站在索引使用的全局来定位的,你只需要通读全篇并结合具体的例子,或回忆以往使用过的地方,对整体有个全面认识,
  • 1. 用户必须在几秒钟知道网站是做什么的。注意力是因特网上最有价值的货币。 如果访问者无法在几秒钟之内得知你的网站的方向,他很有可能转而访问
  • 前言之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,最近面试时和面试官交流,发现遗漏了些东西,这里自己整
  • 索引和切片一维数组一维数组很简单,基本和列表一致。它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改)。这也
  • 前言RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。MQ全称
  • 介绍提到爬虫,互联网的朋友应该都不陌生,现在使用Python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用
  • 使用Hugo构建站点的体验很棒。 首先是构建速度快,其次是使用起来简单,一个hugo命令,我们的站点就已经就绪。在构建过程中,Hugo提供了
  • 相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容
  • 如何快速的复制一张表首先创建一张表db1.t,并且插入1000行数据,同时创建一个相同结构的表db2.t假设,现在需要把db1.t里面的a&
  • 相信不少人,写代码忘我的时候,都会忘记层级之间的缩进,导致代码,看着非常不清晰,这个时候,你是否还在手动一点点缩进,这个时候,我们需要利用编
  • 笔者在网站开发中,采用PHP4.0+MySQL3.23.38建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP+MySQL在网页开
  • 学习编写简练、优化的CSS需要大量的实践和一种不自觉的强迫性清洁的渴望。然而让你的CSS保持整洁并不仅仅是你对清洁的疯狂的心理需求,尤其对于
  • 字符串转十六进制StrToHex Function<% Response.Write StrToHex("Nice
  • 以前在使用import的时候经常会因为模块的导入而出现一些问题,以及一些似懂非懂半疑惑半糊涂的问题,索性花了点时间研究了一些python引用
  • 使用正则表达式限制特殊字符的个数package com.l.dubbo.service; import java.util.HashSet;
  • Python的matplotlib包可以轻松的将数据可视化,博主最近遇到了一个问题,博主想同时在两个窗口展示两张图,但是代码运行结果总是显示
  • 双向链表一种更复杂的链表是&ldquo;双向链表&rdquo;或&ldquo;双面链表&rdquo;。每个节
  • Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。在 Python
  • 1、用户有三种:活跃用户、沉睡用户、外部用户。2、据不完全统计,外部用户8亿,沉睡用户1.2亿,活跃用户1千万。3、就算不去管活跃用户,或者
  • 一、常用按键按键说明Keys.BACK_SPACE回退键(BackSpace)Keys.TAB制表键(Tab)Keys.ENTER回车键(E
手机版 网络编程 asp之家 www.aspxhome.com