【数组变化检测】注意事项

时间:2022-12-18 18:20:36

由于 JavaScript 的限制,Vue 无法检测到以下数组变动:

  1. 当你使用索引直接设置一项时,例如 vm.items[indexOfItem] = newValue
  2. 当你修改数组长度时,例如 vm.items.length = newLength
  3. 为了解决第 1 个问题,以下两种方式都可以实现与 vm.items[indexOfItem] = newValue 相同的效果,但是却可以通过响应式系统出发状态更新:

     
          
    // Vue.set
    Vue.set(example1.items, indexOfItem, newValue)
     
          
    // Array.prototype.splice
    example1.items.splice(indexOfItem, 1, newValue)

    为了解决第 2 个问题,你可以使用 splice

     
          
    example1.items.splice(newLength)