千家信息网

vue.js中$watch的oldvalue与newValue怎么用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章给大家分享的是有关vue.js中$watch的oldvalue与newValue怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。$watch中的oldvalue
千家信息网最后更新 2025年11月07日vue.js中$watch的oldvalue与newValue怎么用

这篇文章给大家分享的是有关vue.js中$watch的oldvalue与newValue怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

$watch中的oldvalue和newValue

大家都知道,在vue.js中给我们提供了$watch的方法来做对象变化的监听,而且在callback中会返回两个对象,分别是oldValue和newValue.

顾名思义,这两个对象就是对象发生变化前后的值。

但是在使用过程中我发现这两个值并不总是预期的。下面来一起看看详细的介绍:

定义data的值

data: { arr: [{  name: '笨笨',  address: '上海' }, {  name: '笨笨熊',  address: '北京' }], obj: {  name: '呆呆',  address: '苏州' }, str: '哈哈哈' }

定义watch

watch: { arr: function(newValue, oldValue) {  console.log(newValue, oldValue)  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue)) }, obj: function(newValue, oldValue) {  console.log(newValue, oldValue)  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue)) }, str: function(newValue, oldValue) {  console.log(newValue, oldValue)  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue)) }, }

定义事件触发

methods: { test() {  this.arr.push({  name: 9  })  this.$set(this.obj, 'i', 0)  this.str = '' }, test1() {  this.arr = [{  name: '000'  }]  this.obj = {  name: 999  }  this.str = '123' } }

测试结果为

  1. 对数组进行push操作和对Obj进行$set操作,虽然都可能触发watch事件,但是在callback返回的结果中,oldValue和newValue相同。字符串对象如预期返回

  2. 在对数组和Obj统一进行赋值操作时,watch触发并且oldValue和newValue如预期返回

关于watch的其他测试

不能够触发监听的

1、数组

修改某个下标的某个属性的值

使用原生delete删除某个属性

对某个下标新增一个属性(不使用$set)

对某个下标重新赋值

2、对象

修改某个属性的值(但是会触发这个属性的监听)

新增一个属性(不使用$set)

原生delete删除某个属性

以上总结可能存在不足

万金油实现watch监听

在修改完数据后添加这样一段代码

array

arr = [...arr]

obj

obj = {...obj}

感谢各位的阅读!关于"vue.js中$watch的oldvalue与newValue怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

属性 对象 监听 下标 两个 数组 事件 内容 是在 更多 篇文章 结果 变化 测试 不错 实用 相同 顾名思义 万金 万金油 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 鹰视网络安全概念股 厦门软件开发哪家靠谱 软件开发工程师 教程 apex手游港服连接服务器失败 有关数据库的设计方案 a3纸三年级网络安全手抄报 数据库如何知道字段的类型的 关于网络安全的对话框的简笔画 电力网络安全通知怎么写 小型网络安全设计 税务局网络安全比赛心得 ins网络安全教学 网络安全 被动防御 最新中国网络安全管理制度和细则 日本软件开发工资真的低吗 catia怎么建数据库 吉林网络技术质量保障 一个服务器只能对应一个小程序吗 数据库表设计文档 客户机远程域控服务器提示未加密 软件开发相关证书考试 服务器记录的数据能保存多久 辽宁智慧社区软件开发公司 软件开发税务筹划有哪些方案 8xln服务器 清妃服务器 视易ktv点歌服务器授权费用 招标软件开发说明书 股票交易软件开发难度 明日之后布兰小镇是哪个服务器
0