Skip to content

Commit 3651782

Browse files
committed
fix: text-style
1 parent 9a72326 commit 3651782

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/content/learn/updating-objects-in-state.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ title: Обновление объектов в состоянии
1010

1111
<YouWillLearn>
1212

13-
- Как правильно в React обновлять объект в состоянии;
14-
- Как обновить вложенный объект без мутации;
15-
- Что такое иммутабельность, как её не нарушить;
13+
- Как правильно в React обновлять объект в состоянии
14+
- Как обновить вложенный объект без мутации
15+
- Что такое иммутабельность, как её не нарушить
1616
- Как сделать копирование объектов менее повторяющимся и сложным с Immer
1717

1818
</YouWillLearn>
@@ -199,7 +199,7 @@ setPosition({
199199

200200
</DeepDive>
201201

202-
## Копирование объектов с использованием спред синтаксиса {/*copying-objects-with-the-spread-syntax*/}
202+
## Копирование объектов с использованием спред-синтаксиса {/*copying-objects-with-the-spread-syntax*/}
203203

204204
В предыдущем примере, объект `position` всегда создаётся заново, исходя из текущей позиции курсора. На практике чаще всего вы захотите включать уже *существующие* данные в новый объект, который вы создаёте. Например, вы можете захотеть обновить *только одно* поле в форме, остальные значения полей сохранить без изменений.
205205

@@ -285,7 +285,7 @@ setPerson({
285285
});
286286
```
287287

288-
Вы можете использовать `...` [спред оператор,](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_object_literals) чтобы вам не нужно было копировать каждое свойство отдельно.
288+
Вы можете использовать `...` [спред-оператор,](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_object_literals) чтобы вам не нужно было копировать каждое свойство отдельно.
289289

290290
```js
291291
setPerson({
@@ -371,7 +371,7 @@ input { margin-left: 5px; margin-bottom: 5px; }
371371

372372
</Sandpack>
373373

374-
Помните, что `...` спред синтаксис является "поверхностным" -- он копирует элементы только на один уровень вглубь. Это свойство делает его быстрым, но это также означает, что если вы хотите обновить вложенное свойство, вам придётся использовать его более одного раза.
374+
Помните, что `...` спред-синтаксис является "поверхностным" -- он копирует элементы только на один уровень вглубь. Это свойство делает его быстрым, но это также означает, что если вы хотите обновить вложенное свойство, вам придётся использовать его более одного раза.
375375

376376
<DeepDive>
377377

@@ -672,7 +672,7 @@ updatePerson(draft => {
672672

673673
Попробуйте Immer:
674674

675-
1. Запустите в терминале `npm install use-immer`, чтобы добавить Immer как зависимость;
675+
1. Запустите в терминале `npm install use-immer`, чтобы добавить Immer как зависимость
676676
2. Далее замените `import { useState } from 'react'` на `import { useImmer } from 'use-immer'`
677677

678678
Ниже представлен пример с использованием Immer:
@@ -809,11 +809,11 @@ img { width: 200px; height: 200px; }
809809
<Recap>
810810

811811
* Рассматривайте все состояния в React как иммутабельные (неизменяемые).
812-
* Когда вы храните объекты в состоянии, их прямое изменение не вызовет повторный рендер и изменит состояние в предыдущих "снимках" рендера;
813-
* Вместо этого, создайте *новую* версию объекта и активируйте повторный рендер, установив для него состояние;
814-
* Вы можете использовать спред синтаксис, чтобы создать новый объект на основе копии старого. Например, `{...obj, something: 'newValue'}`;
815-
* Спред синтаксис "поверхностный": копирование объекта происходит только на одном уровне в глубину;
816-
* Чтобы обновить вложенный объект, вам нужно создать копии на всем пути от того места, которое вы обновляете;
812+
* Когда вы храните объекты в состоянии, их прямое изменение не вызовет повторный рендер и изменит состояние в предыдущих "снимках" рендера.
813+
* Вместо этого, создайте *новую* версию объекта и активируйте повторный рендер, установив для него состояние.
814+
* Вы можете использовать спред-синтаксис, чтобы создать новый объект на основе копии старого. Например, `{...obj, something: 'newValue'}`.
815+
* Спред синтаксис "поверхностный": копирование объекта происходит только на одном уровне в глубину.
816+
* Чтобы обновить вложенный объект, вам нужно создать копии на всем пути от того места, которое вы обновляете.
817817
* Для написания лаконичного кода копирования сложного объекта используйте Immer.
818818

819819
</Recap>
@@ -1132,7 +1132,7 @@ select { margin-bottom: 10px; }
11321132

11331133
Проблема заключалась в мутации внутри `handleMove`. Он изменил `shape.position`, но это тот же объект, на который указывает `initialPosition`. Вот почему блок и фон двигаются. (Это мутация, поэтому изменение не отражается на экране до тех пор, пока несвязанное обновление -- изменение цвета -- не вызовет повторный рендер)
11341134

1135-
Необходимо удалить мутацию из `handleMove` и использовать спред синтаксис для копирования формы. Обратите внимание, что `+=` -- мутация, вам нужно переписать её, чтобы использовать обычную операцию `+`
1135+
Необходимо удалить мутацию из `handleMove` и использовать спред-синтаксис для копирования формы. Обратите внимание, что `+=` -- мутация, вам нужно переписать её, чтобы использовать обычную операцию `+`
11361136

11371137
<Sandpack>
11381138

0 commit comments

Comments
 (0)