正如我们在前面的练习中看到的,状态会对重新赋值做出响应。但它也会对变更做出响应 — 我们称之为深度响应性。
将 numbers
变成一个响应式数组:
App
let numbers = $state([1, 2, 3, 4]);
现在,当我们改变数组时...
App
function addNumber() {
numbers[numbers.length] = numbers.length + 1;
}
...组件就会更新。或者更好的方式是,我们可以使用 push
方法向数组添加元素:
App
function addNumber() {
numbers.push(numbers.length + 1);
}
深度响应性是通过代理(proxies)实现的,对代理的变更不会影响原始对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
let numbers = [1, 2, 3, 4];
function addNumber() {
// TODO implement
}
</script>
<p>{numbers.join(' + ')} = ...</p>
<button onclick={addNumber}>
Add a number
</button>