首页 > 其他分享 >Vue3 watch监视 reactive

Vue3 watch监视 reactive

时间:2025-01-09 23:33:56浏览次数:1  
标签:name person Vue3 watch reactive oldvalue 监视 属性

一、引入

import {reactive, watch } from 'vue'

二、注意

1、监视reactive定义的响应式对象时,oldval无法正确获取,强制开启深度监视,无法关闭

2、监视reactive对象的某个属性时,deep有效(属性为对象),属性为字符串或数字 oldvalue可以正常获取

三、四种情况

1、情况一

监听reactive对象,oldvalue值不变,且强制深度监视,无法关闭

export default {
    name:'DemoData',
    setup() {
       let person = reactive({
            name:'jj',
            age:8,
            job:{
                salary:10
            }
       })     
    //1、 监视 person oldval无效,且强制开启深度监视,无法关闭
    watch(person,(newvalue, oldvalue) => {
        console.log('监视person', newvalue, oldvalue)
    })
    return {
        person
    }
}

2、情况二

监视reactive对象中的属性,且该属性不是对象,可以获得oldValue

setup() {
   let person = reactive({
        name:'jj',
        age:8,
        job:{
            salary:10
        }
   })     
    //2、监视 reactive对象属性,且该属性不为对象,可以获得oldValue
    watch(() =>person.name,(newVal, oldVal) => {
        console.log('name变化', newVal, oldVal)
    })
    return {
        person
    }
}

3、情况三

监视reactive对象的多个属性且该属性不为对象,可以获得oldvalue

setup() {
   let person = reactive({
        name:'jj',
        age:8,
        job:{
            salary:10
        }
   })     
    //3、监视reactive对象的多个属性且该属性不为对象,可以获得oldvalue
    watch([() => person.name, () => person.age],(newVlaue, oldvalue) => {
         console.log('name and age变化', newVlaue, oldvalue)
    })
    return {
        person
    }
}

4、情况四

监视reactive对象中的对象属性,该对象中的属性变化 需要开启深度监听,且oldvalue无效

setup() {
   let person = reactive({
        name:'jj',
        age:8,
        job:{
            salary:10
        }
   })     
    //4.监视reactive对象中的对象属性 中的属性,需要开启深度监听,且oldvalue无效
    watch(() => person.job,(newvalue, oldvalue) => {
        console.log('job中的slary变化', newvalue, oldvalue)
    },{deep:true})

    return {
        person
    }
}

 

标签:name,person,Vue3,watch,reactive,oldvalue,监视,属性
From: https://www.cnblogs.com/wt7018/p/18663090

相关文章

  • 关于redisson的一些问题,为什么要用watchDog
    redisson获取不到锁怎么处理1.阻塞等待锁释放:redisson有waitTimeout参数控制锁等待时间,当某线程获取不到锁时,会进入阻塞状态等待锁释放或超过设置的时间2.tryLock会根据参数直接返回或者抛出异常。 tryLock一般有两种:一种是不带参数的,这种不会阻塞,锁可用就返回true,锁不可用就......
  • Vue3 reactive函数
    1、作用定义一个对象的响应式数据(基本类型不用它,用ref)2、使用a、引入import{reactive}from'vue';b、语法const代理对象=recative(源对象)源对象可以是数组或对象,返回Proxy对象的实例对象3、reactive定义的响应式是深层次的4、案例<template><h2>姓名:{{......
  • Vue3 ref函数 数据响应式
    1、作用:定义响应式数据2、语法a、创建创建一个包含响应式数据的引用对象letxx=ref(数据)b、JS操作xx.valuec、模板操作{{xx}}3、注意数据可以是:基本类型,也可以是对象类型基本类型需要.value获取值,对象中的数据不需要案例<template><h2>姓名:{{name}}</h2>......
  • Vue3 setup
    1、setup是一个函数2、组件中所用到的:数据、方法等,均要配置在setup中3、setup函数返回值(两种)a、返回对象,则对象中的属性、方法等在模板中可以直接使用案例<template><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><button@click="showMessage">点击</button></tem......
  • JS将docx转为html代码--Vue3(简易版)
    这两天突然接了一个把节气文章转成html页面的需求,本来只是需要多按几下ctrl+c,ctrl+v能解决的事,但是想想后续一年24个节气,就做个自动转换的工具吧。由于做软件还涉及到其他语言和配置环境,所以还是选择了web。首先创建一个vue3项目,我用的vite搭建的,不会的请自行移步到vite官网。......
  • vue2.0+vue3.0一学就会全套教程【组件注册与组件通信】
    今天出门,物业小姐姐打招呼说今天是腊八节,叫吃一碗腊八粥。今天是腊八节呀,记得小时候每到这个时候已是浓浓的年味了了,如今粥入游子愁肠,便化作无数相思泪,香飘十里,犹未解远乡情。哈喽,大家好,我是鑫阳,今天一起看看Vue组件开发吧!1、为什么使用组件组件(Component)是Vue.js最核心......
  • Vue3 - Element Plus 报错 Uncaught TypeError: Cannot set property ‘value‘ of un
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在vue3+element-plus项目开发中,解决报错:UncaughtTypeError:Cannotsetproperty‘value‘ofundefined,使用组件时提示错误,意思是尝试修改一个不存在的对象属性或者没有权限修改的属性,很奇怪......
  • vue3项目yarn install遇到的info There appears to be trouble with your network con
    新接手的vue3项目在安装依赖的时候经常下载失败,报错Couldn'tfindpackage...onthe"npm"registry或者errorError:readECONNRESET1.可以改变当前的源查看当前使用的源yarnconfiggetregistry改变源yarnconfigsetregistryhttps://registry.npmmirror.com(推荐......
  • vue3引入ts以及js文件使用案例
    ts:先确保项目正确集成TypeScript添加tsconfig.json文件{"compilerOptions":{"target":"esnext","module":"esnext","strict":true,"jsx":"preserve","importH......
  • 记录一下uniapp vue3 mqtt app端的接入
    原生微信小程序MQTT.js可用版本有v4.2.1、v4.2.0、v4.1.0和v2.18.9npminstallmqtt@4.2.1||yarnaddmqtt@4.2.1使用uniapp框架搭建微信小程序MQTT.js可用版本有v4.1.0和v2.18.9npminstallmqtt@4.1.0||yarnaddmqtt@4.1.0app这里用npminstallm......