vue怎么检测二维数组的更新

Shanny
  • 489

比如:
a0 = 1

a0 = 2

回复
阅读 9.8k
7 个回答

从设计角度只能重新this.$set

楼主写的是二维数组?我怎么看不出来呀。如果真的是二维数组,楼上的方法是最简单的方式,可参考,这个应该很容易想到吧

建议转换为对象嵌套数组的形式,因为vue是利用Object.definedPrototy来监听数据变化的,但是数组没有key值并不适用于这个方法

用 watch 应该就行吧,你可以看下,连 depp: true 都不用

<template>
  <div class="activeManage">
    <input type="text" v-model="arr[0][0]">
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: [[1, 2, 3, 4]]
    }
  },
  watch: {
    arr() {
      console.log('Change');
    }
  }
}
</script>

vue无法检测二维数组,可以采用整体重新赋值的思路

let oldArr = this.yourArr;
let newArr = oldArr.slice(0); //克隆数组
newArr[0] = newValue; //改变
this.yourArr = newArr; //整体重新赋值

可以加个deep试试,我检测对象层级比较深的时候都是用的这个。

config: {
    handler(curVal, oldValue) {

    },
    deep: true
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏