Vue中如何监听数组变化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1191个文字,预计阅读时间需要5分钟。
我们知道通过`Object.defineProperty()`为数组设置getter和setter后,调用数组的push、splice等方法修改数组元素时,并不会触发数组的setter。这就可能导致使用上述方法修改数组后,页面不会立即更新。
我们知道通过Object.defineProperty()劫持数组为其设置getter和setter后,调用的数组的push、splice、pop等方法改变数组元素时并不会触发数组的setter,这就会造成使用上述方法改变数组后,页面上并不能及时体现这些变化,也就是数组数据变化不是响应式的(对上述不了解的可以参考这篇文章)。但实际用vue开发时,对于响应式数组,使用push、splice、pop等方法改变数组时,页面会及时体现这种变化,那么vue中是如何实现的呢?
通过vue源码可以看出,vue重写了数组的push、splice、pop等方法。
本文共计1191个文字,预计阅读时间需要5分钟。
我们知道通过`Object.defineProperty()`为数组设置getter和setter后,调用数组的push、splice等方法修改数组元素时,并不会触发数组的setter。这就可能导致使用上述方法修改数组后,页面不会立即更新。
我们知道通过Object.defineProperty()劫持数组为其设置getter和setter后,调用的数组的push、splice、pop等方法改变数组元素时并不会触发数组的setter,这就会造成使用上述方法改变数组后,页面上并不能及时体现这些变化,也就是数组数据变化不是响应式的(对上述不了解的可以参考这篇文章)。但实际用vue开发时,对于响应式数组,使用push、splice、pop等方法改变数组时,页面会及时体现这种变化,那么vue中是如何实现的呢?
通过vue源码可以看出,vue重写了数组的push、splice、pop等方法。

