VUE使用下标修改数组内的对象的属性值时,watch不触发问题解决

vue官方中说明了侦听数组的改变方法,若是使用索引去改变数组的参数则不会触发vue的watch事件以及渲染。例如↓三种方式都是不会触发vue的监听以及渲染的。

1.通过索引直接设置数组的某个值,

this.objArr[index] = newValue;

2.通过索引直接设置数组中对象的某个属性,

this.objArr[index].pro = newValue;

3.通过修改数组的长度,

this.objArr.length = newLength;

解决方法

官方文档中说明了:

Vue 能够侦听响应式数组的变更方法,并在它们被调用时触发相关的更新。这些变更方法包括:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

举例1,数组的值的变化侦听

this.arr[index] = newValue;通过索引直接设置数组的某个值,是不会触发watch以及视图更新。

那我们就用他给的方法:splice()

this.arr.splice(index,1,newValue)

//这样就会触发vue的watch以及视图的更新。

举例2,数组的对象的值的变化侦听

this.arr[index].val = newValue;通过索引直接设置数组的某个值,是不会触发watch以及视图更新。

那我们就用他给的方法:splice()

修改数组arr指定下标的第一个对象的值。

this.arr.splice(index, 1, {
          'name': this.arr[index].name,
          'value': this.arr[index].value,
          'disable': !this.arr[index].disable
})

//这样就会触发vue的watch以及视图的更新。

相关推荐
又言又语2 个月前
【Vue3】watch 监视多种类型数据
vue·vue3·watch
又言又语2 个月前
【Vue3】watch 监视 ref 定义的数据
vue·vue3·watch·ref
Amd7944 个月前
Vue3使用Composition API实现响应式
vue3·watch·reactive·refs·lifecycle·debugging·composition
朝阳395 个月前
vue3【实用教程】侦听器 watch,自动侦听 watchEffect(),$watch,手动停止侦听器
vue.js·watch·watcheffect
雪梅零落7 个月前
「Vue3系列」Vue3 计算属性(computed)、监听属性(watch)
前端·javascript·vue.js·前端框架·vue·watch·computed
俊刚、9 个月前
【Vue】watch使用详解
前端·vue.js·watch
╰つ栺尖篴夢ゞ9 个月前
云原生之深入解析Kubernetes Operator的最佳实践和最常见的问题分析
云原生·kubernetes·watch·operator
NorthCastle9 个月前
Vue3-18-侦听器watch()、watchEffect() 的基本使用
vue3·watch·侦听器·watcheffect
江湖有缘1 年前
Linux系统之watch命令的基本使用
linux·运维·watch·linux命令
朝阳若蓝1 年前
封装vue2局部组件都要注意什么
前端·javascript·vue·vuex·watch·computed·slot