Vue $watch监听对象属性,数组内对象属性改变

简介: Vue $watch监听对象属性,数组内对象属性改变

目录

我刚开始对数组里的对象属性监听

监听一个对象及属性

同样也可以设置计算属性computed来监听

首次加载不调用监听函数


我刚开始对数组里的对象属性监听

以下对象里的newValue是改变后的新值,oldValue是改变之前的旧值

watch:{
  'listMenu[4].value':{
       handler(newValue, oldValue) {
      console.log(newValue)
    }
 }

直接报错Watcher only accepts simple dot-delimited paths. For full control, use a function instead

想要监听数组内对象属性变化用以下两种方法即可:

1.//第一种方法:
created() {
  this.$watch(
    () => this.listMenu[4].value,
    function(val, old) {}
  )
}
//第二种方法:
computed:{
  watchInputData(){ return this.listMenu[4].value }
},
watch:{
  watchInputData() {
    //这里即可监听到
  }
}

监听一个对象及属性

/*普通watch无法监听到对象内部属性变化,只有data中数据改变时才能监听变化。
因此可添加deep属性:深层遍历,会监听对象内所有属性都变化。注意监听数组的变更不需要这么做。*/
watch: {
//第一种监听所有属性的变化,直接监听整个属性,消耗大不建议
    obj: {
      handler(newValue, oldValue) {
        console.log("对象所有属性监听", newValue, oldValue);
      },
      deep: true
    },
//第二种监听对象一个属性的变化
"obj.name": {
       immediate: true, //true首次加载执行,默认false
      handler(newValue, oldValue) {
        console.log("单个属性监听", newValue, oldValue);
      }
    },
}

同样也可以设置计算属性computed来监听

omputed: {
  getName: function() {
    return this.obj.name
  }
}
watch: {
   getName: {
     handler: function() {
      //监听
     },
   }
}

首次加载不调用监听函数

watch首次加载时不会调用的,只有值变化时才能执行,若要首次调用,需要使用immediate属性。只需在对应的函数内使用immediate: true即可;

相关文章
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1666 0
|
JavaScript 前端开发 API
管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异
一篇文章同时搞定Vue2和Vue3的侦听器,是不是很棒?不要忘了Vue3中多了一个可选项watchEffect噢。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 数据采集 供应链
属性描述符初探——Vue实现数据劫持的基础
属性描述符还有很多内容可以挖掘,比如defineProperty与Proxy的区别,比如vue2与vue3实现数据劫持的方式有什么不同,实现效果有哪些差异等,这篇博文只是入门,以后有时间再深挖。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
缓存 JavaScript Serverless
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
vue中computed计算属性、watch侦听器、methods方法的区别以及用法
1028 0
|
缓存 JavaScript
vue中computed和watch的区别
vue中computed和watch的区别
242 0
|
缓存 JavaScript
Vue 中 computed 和 watch 的区别
Vue 中 computed 和 watch 的区别
437 0