全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

深入理解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  # watch  # oldvalue  # oldval  # old  # 实例详解vue.js浅度监听和深度监听及watch用法  # vue.js使用watch监听路由变化的方法  # Vue.js中关于侦听器(watch)的高级用法示例  # Vue.js 中的 $watch使用方法  # Vue.Js中的$watch()方法总结  # Vue.js计算属性computed与watch(5)  # vue.js中$watch的用法示例  # Vue.js 的 watch函数基本用法  # 这两个  # 但是在  # 大家都  # 给我们  # 苏州  # 在对  # 顾名思义  # 这篇文章  # 来做  # 谢谢大家  # 不能够  # 北京  # 上海  # 中会  # 过程中  # 我发现  # 笨笨熊  # 有疑问  # callback 


相关文章: 如何高效配置香港服务器实现快速建站?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  Python文件管理规范_工程实践说明【指导】  手机网站制作与建设方案,手机网站如何建设?  宝塔建站后网页无法访问如何解决?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  建站主机功能解析:服务器选择与快速搭建指南  简单实现Android验证码  如何用VPS主机快速搭建个人网站?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  学校建站服务器如何选型才能满足性能需求?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  西安大型网站制作公司,西安招聘网站最好的是哪个?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  在线教育网站制作平台,山西立德教育官网?  怎么将XML数据可视化 D3.js加载XML  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何在云主机快速搭建网站站点?  如何选择服务器才能高效搭建专属网站?  html制作网站的步骤有哪些,iapp如何添加网页?  建站主机SSH密钥生成步骤及常见问题解答?  如何快速生成橙子建站落地页链接?  代刷网站制作软件,别人代刷火车票靠谱吗?  建站之星导航配置指南:自助建站与SEO优化全解析  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  建站主机服务器选购指南:轻量应用与VPS配置解析  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  建站之星备案是否影响网站上线时间?  大连网站制作公司哪家好一点,大连买房网站哪个好?  黑客如何利用漏洞与弱口令入侵网站服务器?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  安云自助建站系统如何快速提升SEO排名?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  php json中文编码为null的解决办法  建站之星安全性能如何?防护体系能否抵御黑客入侵?  广州美橙建站如何快速搭建多端合一网站?  香港服务器如何优化才能显著提升网站加载速度?  如何用西部建站助手快速创建专业网站?  如何选择CMS系统实现快速建站与SEO优化?  建站之星导航如何优化提升用户体验?  C++中引用和指针有什么区别?(代码说明)  如何解决VPS建站LNMP环境配置常见问题?  建站之星北京办公室:智能建站系统与小程序生成方案解析  济南专业网站制作公司,济南信息工程学校怎么样?  如何设计高效校园网站?  全景视频制作网站有哪些,全景图怎么做成网页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。