在不用$set和deep的情况,如何对数组中的某一项进行监听

1.定义一个响应式对象,将数组转为响应式对象。

const arr = reactive([
  {
    
     id: 1, name: 'Alice' },
  {
    
     id: 2, name: 'Bob' },
  {
    
     id: 3, name: 'Charlie' }
])
  1. 使用 watchEffect 监听数组中某一项的变化。
watchEffect(() => {
    
    
  console.log(arr[1].name)
})

这里的第一个参数是一个函数,该函数中访问了要监听的数组中的某一项,当这一项发生变化时,watchEffect 函数会自动执行该函数,并打印出最新的值。

需要注意的是,在使用 watchEffect 监听数组中某一项的变化时,不能直接访问数组本身,而是要访问数组的某一项才能触发监听函数的执行。这是因为 watchEffect 函数只能监听到被访问的响应式数据,而无法监听到未被访问的响应式数据。

总结一下,使用 Vue 3.x 中的 reactive 函数和 watchEffect 函数可以方便地实现对数组中某一项的监听,而不需要使用 $set 和 deep。

猜你喜欢

转载自blog.csdn.net/qq_42816270/article/details/130714637