首页 > 其他分享 >解决vue中watch监听对象变化获取不到旧数据的问题

解决vue中watch监听对象变化获取不到旧数据的问题

时间:2023-09-13 11:22:05浏览次数:41  
标签:vue console log watch newVal oldVal 监听

解决vue中watch监听对象变化获取不到旧数据的问题

1.问题代码

  watch: {
    pageInfo: {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal);
      },
    }
  }

结果:打印出来newVal和oldVal输出内容一样
image

console.log(newVal === oldVal) //true

发现这俩对象一样,它们两指向的是同一个引用,这说明 Watch 只是侦听到它改变了,并没有把之前的老值给缓存下来,引用类型直接指向了引用地址。

2.解决方法

  computed: {
    deepPageInfo() {
      return JSON.parse(JSON.stringify(this.pageInfo));
    }
  },
  watch: {
    deepPageInfo: {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal);
      },
      deep: true
    }
  },

使用computed计算属性对pageInfo进行深拷贝,然后监听deepPageInfo的变化。这样就能获取到旧数据的值。
image

标签:vue,console,log,watch,newVal,oldVal,监听
From: https://www.cnblogs.com/domin520Jian/p/17699111.html

相关文章

  • Vue.set和splice方法有什么区别?
    Vue.set方法和splice方法在Vue中用于修改数组的行为有一些区别。一:Vue.set(obj,key,value):用途:Vue.set是Vue提供的全局方法,用于向响应式对象中添加新的响应式属性,并确保这个新属性是响应式的。参数:obj:要修改的目标对象。key:要添加的属性键名。value:要添加的属性值。示......
  • 从零开始使用vue2+element搭建后台管理系统(实现导出excel表格的功能)
    首先参阅了以下文档:https://panjiachen.gitee.io/vue-element-admin-site/zh/feature/component/excel.html#excel-%E5%AF%BC%E5%87%BAhttps://blog.csdn.net/weixin_42028153/article/details/124804841核心思想:抄一下vue-element-admin这个很棒的开源集成后台管理系统中所提......
  • VUE2教程-基础-Class 与 Style 绑定
    Class与Style绑定操作元素的class列表和内联样式是数据绑定的一个常见需求。因为它们都是attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js做了专门的增强......
  • VUE2基础-Vue实例
    Vue实例创建一个Vue实例 每个Vue应用都是通过用 Vue 函数创建一个新的 Vue实例开始的:varvm=newVue({//选项})虽然没有完全遵循 MVVM模型,但是Vue的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel的缩写)这个变量名表示Vue实例。当创建......
  • VUE2教程-基础-简介
    Vue.js是什么Vue(读音/vjuː/,类似于 view)是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue......
  • Vue~vue3-sfc-loader用法
    1.vue2-sfc-loader版本参考这个:(vue2&vue2-sfc-loader)https://article.juejin.cn/post/72369546129882972742.vue3-sfc-loader版本的基础写法:(vue3&vue3-sfc-loader)<template><div><component:is="data.remote"v-if="data.remote&q......
  • vue router页面跳转及传参、Vue获取用户输入到页面的数据在另一个页面使用
     vuerouter页面跳转及传参?一、router-link跳转###1.不带参数,name,path都行,建议用name<router-link:to="{name:'home'}"><router-link:to="{path:'/home'}">###2.带params参数<router-link:to="{name:'home'......
  • Vue编译出现This file is being treated as an ES module because it has a '.js' fil
    问题描述在编译前端项目时出现下面的问题:FailedtoloadPostCSSconfig:FailedtoloadPostCSSconfig(searchPath:D:/WebProject/imooc-front):[FailedtoloadPostCSSconfig]FailedtoloadPostCSSconfig(searchPath:D:/WebProject/imooc-front):Thisfileisbe......
  • 利用Api接口实现手机网络连接断开的监听
    在今天的移动互联网时代,手机已经成为了人们不可或缺的重要工具,而手机的联网状态也是我们经常需要关注的一个问题。我们需要保证手机网络处于正常的连接状态,但是有时候,由于种种原因,手机的网络可能会断开,这时我们需要及时发现,并进行相应的处理措施。而利用Api接口实现手机网络连接断......
  • Vue学习三:生命周期和工程化开发
    一、Vue生命周期Vue生命周期就是一个Vue实例从创建到销毁的过程生命周期四个阶段:1、创建2、挂载3、更新4、销毁Vue生命周期函数(钩子函数)Vue生命周期过程中,会自动运行一些函数,被称为[生命周期钩子]→让开发者可以在[特定阶段]运行自己的代码。创建阶段其实就是开辟存放数......