From 5f769afbc270a8976f348507812afc1bbbdfcbbc Mon Sep 17 00:00:00 2001 From: WBbug <1056342711@qq.com> Date: Wed, 10 May 2023 18:45:21 +0800 Subject: [PATCH 1/4] fix(cn): fix format wrong --- src/content/learn/updating-arrays-in-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/learn/updating-arrays-in-state.md b/src/content/learn/updating-arrays-in-state.md index 9b11dc58ca..779d453e18 100644 --- a/src/content/learn/updating-arrays-in-state.md +++ b/src/content/learn/updating-arrays-in-state.md @@ -460,7 +460,7 @@ setList(nextList); ## 更新数组内部的对象 {/*updating-objects-inside-arrays*/} -对象并不是_真的_位于数组“内部”。可能他们在代码中看起来像是在数组“内部”,但其实数组中的每个对象都是这个数组“指向”的一个存储于其它位置的值。这就是当你在处理类似 `list[0]` 这样的嵌套字段时需要格外小心的原因。其他人的艺术品清单可能指向了数组的同一个元素! +对象并不是 _真的_ 位于数组“内部”。可能他们在代码中看起来像是在数组“内部”,但其实数组中的每个对象都是这个数组“指向”的一个存储于其它位置的值。这就是当你在处理类似 `list[0]` 这样的嵌套字段时需要格外小心的原因。其他人的艺术品清单可能指向了数组的同一个元素! **当你更新一个嵌套的 state 时,你需要从想要更新的地方创建拷贝值,一直这样,直到顶层。** 让我们看一下这该怎么做。 From eccc93567765862af7b89cfa6e44dd3def07e0c5 Mon Sep 17 00:00:00 2001 From: WBbug <1056342711@qq.com> Date: Wed, 10 May 2023 18:49:38 +0800 Subject: [PATCH 2/4] fix(cn): fix format wrong --- src/content/learn/updating-arrays-in-state.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/learn/updating-arrays-in-state.md b/src/content/learn/updating-arrays-in-state.md index 779d453e18..d52cbf75fb 100644 --- a/src/content/learn/updating-arrays-in-state.md +++ b/src/content/learn/updating-arrays-in-state.md @@ -448,7 +448,7 @@ export default function List() { 在这段代码中,你先使用 `[...list]` 展开运算符创建了一份数组的拷贝值。当你有了这个拷贝值后,你就可以使用像 `nextList.reverse()` 或 `nextList.sort()` 这样直接修改原数组的方法。你甚至可以通过 `nextList[0] = "something"` 这样的方式对数组中的特定元素进行赋值。 -然而,**即使你拷贝了数组,你还是不能直接修改其_内部_的元素**。这是因为数组的拷贝是浅拷贝——新的数组中依然保留了与原始数组相同的元素。因此,如果你修改了拷贝数组内部的某个对象,其实你正在直接修改当前的 state。举个例子,像下面的代码就会带来问题。 +然而,**即使你拷贝了数组,你还是不能直接修改其 _内部_ 的元素**。这是因为数组的拷贝是浅拷贝——新的数组中依然保留了与原始数组相同的元素。因此,如果你修改了拷贝数组内部的某个对象,其实你正在直接修改当前的 state。举个例子,像下面的代码就会带来问题。 ```js const nextList = [...list]; @@ -776,7 +776,7 @@ updateMyTodos(draft => { }); ``` -这是因为你并不是在直接修改_原始的_ state,而是在修改 Immer 提供的一个特殊的 `draft` 对象。同理,你也可以为 `draft` 的内容使用 `push()` 和 `pop()` 这些会直接修改原值的方法。 +这是因为你并不是在直接修改 _原始的_ state,而是在修改 Immer 提供的一个特殊的 `draft` 对象。同理,你也可以为 `draft` 的内容使用 `push()` 和 `pop()` 这些会直接修改原值的方法。 在幕后,Immer 总是会根据你对 `draft` 的修改来从头开始构建下一个 state。这使得你的事件处理程序非常的简洁,同时也不会直接修改 state。 From fd3c950d0a80073cd39c5bde04dbee346d601619 Mon Sep 17 00:00:00 2001 From: Xavi Lee Date: Thu, 11 May 2023 14:38:59 +0800 Subject: [PATCH 3/4] Update src/content/learn/updating-arrays-in-state.md --- src/content/learn/updating-arrays-in-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/learn/updating-arrays-in-state.md b/src/content/learn/updating-arrays-in-state.md index d52cbf75fb..a241b1eb7a 100644 --- a/src/content/learn/updating-arrays-in-state.md +++ b/src/content/learn/updating-arrays-in-state.md @@ -776,7 +776,7 @@ updateMyTodos(draft => { }); ``` -这是因为你并不是在直接修改 _原始的_ state,而是在修改 Immer 提供的一个特殊的 `draft` 对象。同理,你也可以为 `draft` 的内容使用 `push()` 和 `pop()` 这些会直接修改原值的方法。 +这是因为你并不是在直接修改原始的 state,而是在修改 Immer 提供的一个特殊的 `draft` 对象。同理,你也可以为 `draft` 的内容使用 `push()` 和 `pop()` 这些会直接修改原值的方法。 在幕后,Immer 总是会根据你对 `draft` 的修改来从头开始构建下一个 state。这使得你的事件处理程序非常的简洁,同时也不会直接修改 state。 From 217df59590f0e585c316ed5746628a92fb05eccc Mon Sep 17 00:00:00 2001 From: Xavi Lee Date: Thu, 11 May 2023 14:39:08 +0800 Subject: [PATCH 4/4] Update src/content/learn/updating-arrays-in-state.md --- src/content/learn/updating-arrays-in-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/learn/updating-arrays-in-state.md b/src/content/learn/updating-arrays-in-state.md index a241b1eb7a..fec6bfd95b 100644 --- a/src/content/learn/updating-arrays-in-state.md +++ b/src/content/learn/updating-arrays-in-state.md @@ -448,7 +448,7 @@ export default function List() { 在这段代码中,你先使用 `[...list]` 展开运算符创建了一份数组的拷贝值。当你有了这个拷贝值后,你就可以使用像 `nextList.reverse()` 或 `nextList.sort()` 这样直接修改原数组的方法。你甚至可以通过 `nextList[0] = "something"` 这样的方式对数组中的特定元素进行赋值。 -然而,**即使你拷贝了数组,你还是不能直接修改其 _内部_ 的元素**。这是因为数组的拷贝是浅拷贝——新的数组中依然保留了与原始数组相同的元素。因此,如果你修改了拷贝数组内部的某个对象,其实你正在直接修改当前的 state。举个例子,像下面的代码就会带来问题。 +然而,**即使你拷贝了数组,你还是不能直接修改其内部的元素**。这是因为数组的拷贝是浅拷贝——新的数组中依然保留了与原始数组相同的元素。因此,如果你修改了拷贝数组内部的某个对象,其实你正在直接修改当前的 state。举个例子,像下面的代码就会带来问题。 ```js const nextList = [...list];