Appearance
7.Vue 中如何检测数组变化?
1.1 Vue2 中采用重写数组方法的方式
- 数组考虑性能原因没有用
defineProperty
对数组的每一项进行拦截,而是选择重写数组(push,shift,pop,splice,unshift,sort,reverse
)方法。数组中如果是对象数据类型也会进行递归劫持。
1.2 Vue3 直接采用的是 Proxy
- 在 Vue 3.x 中,直接使用 Proxy 实现了更高效和精确的数组变化检测,通过 Proxy,Vue 可以捕获到数组索引和长度的变化,不再需要重写数组的方法。这是 Vue 3.x 在性能方面的一个重要改进(但是由于代理问题,还需要对部分检测方法进行重写)。