W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
由于 Svelte 的反應(yīng)性是由賦值語(yǔ)句觸發(fā)的,因此使用數(shù)組的諸如 push
和 splice
之類的方法就不會(huì)觸發(fā)自動(dòng)更新。例如,點(diǎn)擊按鈕就不會(huì)執(zhí)行任何操作。
解決該問(wèn)題的一種方法是添加一個(gè)多余的賦值語(yǔ)句:
function addNumber() {
numbers.push(numbers.length + 1);
numbers = numbers;
}
但還有一個(gè)更慣用的解決方案:
function addNumber() {
numbers = [...numbers, numbers.length + 1];
}
你可以使用類似的模式來(lái)替換 pop
、shift
、unshift
和 splice
方法。
賦值給數(shù)組和對(duì)象的 屬性(properties) (例如,obj.foo += 1
或 array[i] = x
)與對(duì)值本身進(jìn)行賦值的方式相同。
function addNumber() {
numbers[numbers.length] = numbers.length + 1;
}
一個(gè)簡(jiǎn)單的經(jīng)驗(yàn)法則是:被更新的變量的名稱必須出現(xiàn)在賦值語(yǔ)句的左側(cè)。例如下面這個(gè):
const foo = obj.foo;
foo.bar = 'baz';
就不會(huì)更新對(duì) obj.foo.bar
的引用,除非使用 obj = obj
方式。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: