繁体   English   中英

(VueJS v3)我如何观察反应数组的数组突变(插入、删除、替换)?

[英](VueJS v3) How would I watch for array mutations (inserted, removed, replaced) of an reactive array?

如何查看反应数组,以便知道在调用push()splice()等时插入、删除和替换了什么?

由于splice等不直接为数组分配新值,因此 Vue 的反应性系统不会接受更改,并且观察者不会触发。

但是,您可以创建一个复制数组的计算对象,然后观察:

computed: {
  myArray() {
    return this.my_array.slice();
  },
},
data() {
  return {
    my_array: [],
  };
},
watch: {
  myArray(newArray, oldArray) {
    // do stuff
  },
},

演示

在 Vue3 上,您可以在脚本上执行此操作

<script setup>
watchEffect(() => { console.log(nameOfYourArray)})
</script>

或者在带有选项 API 的 Vue 2 和 Vue3 上

     Watch: {
      nameofYourArray: {
        deep: true,
        immediate:true,
        handler(newVal,oldVal){
        console.log(newVal)
        }
      }
   }

如果您使用 2 个解决方案,请不要忘记添加 deep 否则它将不适用于子数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM