gpt4 book ai didi

javascript - 由于 JavaScript 的限制,Vue 无法检测数组的更改。有什么限制?

转载 作者:行者123 更新时间:2023-11-28 14:22:06 27 4
gpt4 key购买 nike

Acording to Vue.js Guide

Due to limitations in JavaScript, Vue cannot detect the changes to an array

有人知道有什么限制吗?

为什么 Vue 可以检测到对象的变化,但不能检测到数组的变化?

最佳答案

正如您在下面的“对象更改检测警告”中所看到的,Vue 没有使用 Proxy 来检测更改(可能是由于缺乏浏览器支持),而是使用 getter & setters:

 const example = {
get value() { return this._value; },
set value(v) {
this._value = v;
console.log("change detected");
}
};

example.value = "test"; // change detected
example.unknown = "test"; // silence

现在无法检测其他属性,因为它必须向每个可能的键添加 getter 和 setter,这是不可能的。它也无法检测到删除

 delete example.value;

还会删除 setter,而没有任何方法可以检测到这一点。

对于数组来说是一样的,理论上你可以为每个可能的索引创建一个 getter/setter 对,但这并不能真正扩展。相反,Vue Hook 到更改数组的方法,该方法适用于所有索引。

关于javascript - 由于 JavaScript 的限制,Vue 无法检测数组的更改。有什么限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com