vue2中数组的那7个方法是如何实现响应式的,原理是什么?

新手上路,请多包涵

为什么vue2中数组的7个方法可以实现响应式,其他的方法却不行

阅读 3k
2 个回答

图片.png
与其提问不如试着看看源码找找。
为什么只有这7个方法——因为这7个方法会修改原数组,slice/concat等都是返回一个新数组,并不修改原数组,无需覆写

你可以理解为Vue直接覆写了一遍数组原型链上的方法,去通知OB数组被改变了。如果你直接修改数组下标则不会触发这些内部API,OB就不会知道这个数组被修改了,就不会去更新视图。
具体可以看这里 vue/array.ts at main · vuejs/vue

如果你是初学者,可以看B站UP Vue面试题讲解 (数组的变化监听在P1的8分40秒处)这部分的讲解。

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