You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/reference/react/useReducer.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -119,7 +119,7 @@ function handleClick() {
119
119
}
120
120
```
121
121
122
-
React передаст текущее состояние и действие в <CodeStep step={4}>редьюсер</CodeStep>. Редьюсер вычислит и вернет следующее состояние. React сохранит это состояние, отрисует компонент и обновит пользовательский интерфейс.
122
+
React передаст текущее состояние и действие в <CodeStep step={4}>редьюсер</CodeStep>. Редьюсер вычислит и вернёт следующее состояние. React сохранит это состояние, отрисует компонент и обновит пользовательский интерфейс.
123
123
124
124
<Sandpack>
125
125
@@ -753,13 +753,13 @@ function TodoList({ username }) {
753
753
754
754
Обратите внимание, что вы передаёте `createInitialState`, которая сама является *функцией*, а не `createInitialState()`, что является результатом её вызова. Таким образом, начальное состояние не будет повторно создано после инициализации.
755
755
756
-
В приведенном выше примере `createInitialState` принимает аргумент `username`. Если вашему инициализатору не нужна информация для вычисления начального состояния, вы можете передать `null` в качестве второго аргумента `useReducer`.
756
+
В приведённом выше примере `createInitialState` принимает аргумент `username`. Если вашему инициализатору не нужна информация для вычисления начального состояния, вы можете передать `null` в качестве второго аргумента `useReducer`.
757
757
758
758
<Recipes titleText="Разница между передачей инициализатора и начального состояния напрямую" titleId="examples-initializer">
759
759
760
760
#### Передача функции инициализатора {/*passing-the-initializer-function*/}
761
761
762
-
В этом примере передается функция инициализатора, поэтому функция `createInitialState` выполняется только во время инициализации. Она не выполняется при повторном рендеринге компонента, например, когда вы вводите текст в поле ввода.
762
+
В этом примере передаётся функция инициализатора, поэтому функция `createInitialState` выполняется только во время инициализации. Она не выполняется при повторном рендеринге компонента, например, когда вы вводите текст в поле ввода.
763
763
764
764
<Sandpack>
765
765
@@ -947,15 +947,15 @@ function handleClick() {
947
947
console.log(state.age); // 42
948
948
949
949
dispatch({ type: 'incremented_age' }); // Запрос повторного рендеринга с 43
950
-
console.log(state.age); // Все еще 42!
950
+
console.log(state.age); // Все ещё 42!
951
951
952
952
setTimeout(() => {
953
953
console.log(state.age); // Так же 42!
954
954
}, 5000);
955
955
}
956
956
```
957
957
958
-
Это происходит, потому что [состояние ведет себя как снимок.](/learn/state-as-a-snapshot) Обновление состояния, запрашивает другой рендер с новым значением состояния, но не влияет на JavaScript-переменную `state` в уже запущенном обработчике событий.
958
+
Это происходит, потому что [состояние ведёт себя как снимок.](/learn/state-as-a-snapshot) Обновление состояния, запрашивает другой рендер с новым значением состояния, но не влияет на JavaScript-переменную `state` в уже запущенном обработчике событий.
959
959
960
960
Если вам нужно получить значение следующего состояния, вы можете вычислить его вручную, вызвав редюсер самостоятельно:
961
961
@@ -1018,7 +1018,7 @@ function reducer(state, action) {
1018
1018
1019
1019
---
1020
1020
1021
-
### Часть состояния моего редьюсера становится неопределенной после диспетчеризации {/*a-part-of-my-reducer-state-becomes-undefined-after-dispatching*/}
1021
+
### Часть состояния моего редьюсера становится неопределённой после диспетчеризации {/*a-part-of-my-reducer-state-becomes-undefined-after-dispatching*/}
1022
1022
1023
1023
Убедитесь, что каждая ветвь `case`**копирует все существующие поля**, когда возвращает новое состояние:
1024
1024
@@ -1038,7 +1038,7 @@ function reducer(state, action) {
1038
1038
1039
1039
---
1040
1040
1041
-
### Все состояние моего редьюсера становится неопределенным после диспетчеризации {/*my-entire-reducer-state-becomes-undefined-after-dispatching*/}
1041
+
### Все состояние моего редьюсера становится неопределённым после диспетчеризации {/*my-entire-reducer-state-becomes-undefined-after-dispatching*/}
1042
1042
1043
1043
Если ваше состояние неожиданно становится `undefined`, скорее всего, вы забыли `возвратить` состояние в одном из случаев, или ваш тип действия не соответствует ни одному из утверждений `case`. Чтобы выяснить причину, выбросьте ошибку вне `case`:
1044
1044
@@ -1068,10 +1068,10 @@ function reducer(state, action) {
1068
1068
// 🚩 Неправильно: вызывает обработчик во время рендеринга
@@ -1119,6 +1119,6 @@ function reducer(state, action) {
1119
1119
}
1120
1120
```
1121
1121
1122
-
Теперь, когда функция редьюсера является чистой, ее повторный вызов не изменит поведение. Вот почему двойной вызов в React помогает найти ошибки. **Только функции компонента, инициализатора и редьюсера должны быть чистыми.** Обработчики событий не должны быть чистыми, поэтому React никогда не будет вызывать обработчики событий дважды.
1122
+
Теперь, когда функция редьюсера является чистой, её повторный вызов не изменит поведение. Вот почему двойной вызов в React помогает найти ошибки. **Только функции компонента, инициализатора и редьюсера должны быть чистыми.** Обработчики событий не должны быть чистыми, поэтому React никогда не будет вызывать обработчики событий дважды.
1123
1123
1124
1124
Прочитайте про [сохранение чистоты компонентов,](/learn/keeping-components-pure) чтобы узнать больше.
0 commit comments