Vue watch监测不到数据变化与新老值一样

作者 : 开心源码 本文共513个字,预计阅读时间需要2分钟 发布时间: 2022-05-13 共248人阅读

当watch的值是一个引用类型的,如Array Object这种,是监测不到变化的。

方法:

  1. 第一步: 设置深度监听 deep: true

    watch: {    testData: {        handler: (newVal, oldVal) => {          console.log('我变化了', newVal, oldVal)        },        deep: true    }}

    这样已经能监听到数据发生变化了,但是打印的 newVal oldVal是一样的。由于他们的数据同源,引用指针指向是一样的。

  2. 第二步:配合computed

    watch:{  testData: {    handler: function (newVal, oldVal) {        let obj = JSON.parse(newVal);        let obj2 = JSON.parse(oldVal);        console.log(obj, obj2)    },    deep: true  }},comouted:{ testData(){     return JSON.parse(JSON.stringify(this.testData)) // 此处我的了解就是,序列化反序列化后 返回了一个新的对象,而不是在原对象改属性。 }}// 思路:就是将我们需要的值进行序列化和反序列化。这样打印出的值就是我们想要的了。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Vue watch监测不到数据变化与新老值一样

发表回复