正如我们在之前的练习中看到的,状态对重新赋值做出反应。但它也对变异做出反应——我们称之为深层响应式。
使 numbers
成为一个响应式数组
应用
let numbers = $state([1, 2, 3, 4]);
现在,当我们更改数组时...
应用
function addNumber() {
numbers[numbers.length] = numbers.length + 1;
}
...组件会更新。或者更好的是,我们可以使用 push
代替来向数组中添加元素
应用
function addNumber() {
numbers.push(numbers.length + 1);
}
深层响应式是使用代理实现的,对代理的变异不会影响原始对象。
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>