Skip to content

Commit dfdb2df

Browse files
committed
Refine terms according to glossary
1 parent e4344bf commit dfdb2df

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

content/docs/state-and-lifecycle.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ prev: components-and-props.html
88
next: handling-events.html
99
---
1010

11-
На этой странице представлена концепция "состояния" (state) и "жизненного цикла" (lifecycle) компонентов React. Подробная [документация API компонента доступна по ссылке](/docs/react-component.html) .
11+
На этой странице представлена концепция "состояния" (state) и "жизненного цикла" (lifecycle) компонентов React. Подробная [справочнике API компонента доступна по ссылке](/docs/react-component.html) .
1212

13-
В качестве примера рассмотрим бегущие часы из [предыдущего раздела](/docs/rendering-elements.html#updating-the-rendered-element). В разделе [Рендeринг элементов](/docs/rendering-elements.html#rendering-an-element-into-the-dom) мы изучили лишь один способ обновления UI - вызвать `ReactDOM.render()` для изменения результата отрисовки (рендеринга):
13+
В качестве примера рассмотрим бегущие часы из [предыдущего раздела](/docs/rendering-elements.html#updating-the-rendered-element). В разделе [Рендeринг элементов](/docs/rendering-elements.html#rendering-an-element-into-the-dom) мы изучили лишь один способ обновления UI - вызвать `ReactDOM.render()` для изменения результата рендера:
1414

1515
```js{8-11}
1616
function tick() {
@@ -29,9 +29,9 @@ function tick() {
2929
setInterval(tick, 1000);
3030
```
3131

32-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/gwoJZk?editors=0010)
32+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/gwoJZk?editors=0010)
3333

34-
В этом разделе мы узнаем, как инкаспулировать и обеспечить многократное использование компонента `Clock`. Компонент будет самостоятельно инициировать свой собственный таймер и будет самообновляться раз в секунду.
34+
В этом разделе мы узнаем, как инкаспулировать и обеспечить многократное использование компонента `Clock`. Компонент самостоятельно создаст свой собственный таймер и будет самообновляться раз в секунду.
3535

3636
Начнем с инкапсуляции кода ответственного за вывод строки с текущим временем в функциональный компонент `Clock`:
3737

@@ -55,11 +55,11 @@ function tick() {
5555
setInterval(tick, 1000);
5656
```
5757

58-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/dpdoYR?editors=0010)
58+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/dpdoYR?editors=0010)
5959

60-
Обратите внимание, что инциирование таймера и ежесекундное обновление интерфейса не является внутренней деталью реализации компонента `Clock`, а это одно из ключевых требований.
60+
Обратите внимание, что создание таймера и ежесекундное обновление интерфейса не является внутренней деталью реализации компонента `Clock`, а это одно из ключевых требований.
6161

62-
В идеале мы бы хотели имплементировать `Clock` таким образом, чтобы компонент сам себя обновлял:
62+
В идеале мы бы хотели реализовать `Clock` таким образом, чтобы компонент сам себя обновлял:
6363

6464
```js{2}
6565
ReactDOM.render(
@@ -72,11 +72,11 @@ ReactDOM.render(
7272

7373
"Состояние" очень похоже на уже знакомые нам пропс (props), отличие в том, что состояние контролируется и доступно только конкретному компоненту.
7474

75-
Мы [уже упоминали](/docs/components-and-props.html#functional-and-class-components), что класс-компоненты обладают дополнительными свойствами. Локальное "состояние" — это одно из таких свойств, которое доступно только класс-компнентам.
75+
Мы [уже упоминали](/docs/components-and-props.html#functional-and-class-components), что классовые компоненты обладают дополнительными свойствами. Локальное "состояние" — это одно из таких свойств, которое доступно только классовым компнентам.
7676

7777
## Преобразование функции в класс {#converting-a-function-to-a-class}
7878

79-
Давайте преобразуем функциональный компонент `Clock` в класс-компонент в 5 этапов:
79+
Давайте преобразуем функциональный компонент `Clock` в классовый компонент в 5 этапов:
8080

8181
1. Создаем [ES6-класс](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes) с таким же именем, указываем `React.Component` в качестве родительского класса
8282

@@ -102,12 +102,12 @@ class Clock extends React.Component {
102102
}
103103
```
104104

105-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/zKRGpo?editors=0010)
105+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/zKRGpo?editors=0010)
106106

107107
`Clock` теперь определён как класс, а не функция.
108108

109109

110-
Метод `render` будет вызываться каждый раз, когда происходит обновление. Так как мы отрисовываем `<Clock />` в один и тот же DOM-контейнер, мы используем единственный экземпляр класса `Clock` - поэтому мы можем задействовать внутреннее состояние и хуки жизненного цикла.
110+
Метод `render` будет вызываться каждый раз, когда происходит обновление. Так как мы рендерим `<Clock />` в один и тот же DOM-контейнер, мы используем единственный экземпляр класса `Clock` - поэтому мы можем задействовать внутреннее состояние и хуки жизненного цикла.
111111

112112
## Добавление локального состояния в класс {#adding-local-state-to-a-class}
113113

@@ -158,7 +158,7 @@ class Clock extends React.Component {
158158
}
159159
```
160160

161-
Класс-компоненты всегда должны вызывать базовый конструктор с передачей ему `props`.
161+
Классовые компоненты всегда должны вызывать базовый конструктор с передачей ему `props`.
162162

163163
3) Удалим проп `date` из элемента `<Clock />`:
164164

@@ -196,15 +196,15 @@ ReactDOM.render(
196196
);
197197
```
198198

199-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/KgQpJd?editors=0010)
199+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/KgQpJd?editors=0010)
200200

201-
Следущий этап - добавить в `Clock` инициализацию собственного таймера с обновлением каждую секунду.
201+
Следущий этап - добавить в `Clock` создание собственного таймера с обновлением каждую секунду.
202202

203203
## Добавление методов жизненного цикла в класс {#adding-lifecycle-methods-to-a-class}
204204

205205
В приложениях с множеством компонентов очень важно освобождать используемые системные ресурсы при удалении компонентов.
206206

207-
Мы называем "монтированием" (установкой) первоначальный рендеринг `Clock` в DOM. Наша цель - [инициировать таймер](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval) всякий раз, когда это происходит.
207+
Мы называем "монтированием" (установкой) первоначальный рендеринг `Clock` в DOM. Наша цель - [создать таймер](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval) всякий раз, когда это происходит.
208208

209209
Каждый раз когда DOM-узел, созданный `Clock`, удаляется, просходит то, что мы называем "размонтирование". Учитывая важность сохранения ресурсов, мы [сбросим таймер](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval) при каждой "размонтировке".
210210

@@ -238,7 +238,7 @@ class Clock extends React.Component {
238238

239239
Эти методы называются "хуками (методами) жизненного цикла" (lifecycle methods).
240240

241-
Хук `componentDidMount()` запускается после того, как компонент отрендерился в DOM - это подходящее место для инициализирования таймера:
241+
Хук `componentDidMount()` запускается после того, как компонент отрендерился в DOM - это подходящее место для создания таймера:
242242

243243
```js{2-5}
244244
componentDidMount() {
@@ -251,7 +251,7 @@ class Clock extends React.Component {
251251

252252
Обратите внимание, что мы сохраняем ID таймера в `this`.
253253

254-
В класс-компонентах `this.props` инициализируется самим React, так же как и `this.state` - у этих полей особое назначение. Однако, если вам нужно сохранить информацию, которая не является частью процесса обработки данных React, можно вручную добавить дополнительные поля в класс (например, ID таймера).
254+
В классовых компонентах `this.props` создается самим React, так же как и `this.state` - у этих полей особое назначение. Однако, если вам нужно сохранить информацию, которая не является частью процесса обработки данных React, можно вручную добавить дополнительные поля в класс (например, ID таймера).
255255

256256
Удалим таймер в хуке жизненного цикла `componentWillUnmount()`:
257257

@@ -303,7 +303,7 @@ ReactDOM.render(
303303
);
304304
```
305305

306-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/amqdNA?editors=0010)
306+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/amqdNA?editors=0010)
307307

308308
Результат - часы обновляются каждую секунду.
309309

@@ -313,9 +313,9 @@ ReactDOM.render(
313313

314314
2) React вызывает метод `render()` компонента `Clock`. Таким образом React узнаёт, что отобразить на экране. Далее, React обновляет DOM так, чтобы он соответствовал выводу ренедера `Clock`.
315315

316-
3) Как только вывод рендера `Clock` вставлен в DOM, React вызывает хук жизненного цикла `componentDidMount()`. Внутри него компонент `Clock` указывает браузеру инициализировать таймер, который будет вызывать метод компонента `tick()` раз в секунду.
316+
3) Как только вывод рендера `Clock` вставлен в DOM, React вызывает хук жизненного цикла `componentDidMount()`. Внутри него компонент `Clock` указывает браузеру создать таймер, который будет вызывать метод компонента `tick()` раз в секунду.
317317

318-
4) Таймер вызывает метод `tick()` ежесекундно. Часть метода - вызов `setState()` с объектом, содержащим текущее время в качестве аргумента - таким образом компонент `Clock` планирует обновление UI. Благодаря вызову `setState()` React знает, что состояние изменилось, и снова вызывает метод `render()`, чтобы узнать, что должно отображаться на экране. На этот раз `this.state.date` в методе `render()` будет другим, и поэтому вывод отрисованного компонента будет включать обновлённое время и React соответственно обновит DOM.
318+
4) Таймер вызывает метод `tick()` ежесекундно. Часть метода - вызов `setState()` с объектом, содержащим текущее время в качестве аргумента - таким образом компонент `Clock` планирует обновление UI. Благодаря вызову `setState()` React знает, что состояние изменилось, и снова вызывает метод `render()`, чтобы узнать, что должно отображаться на экране. На этот раз `this.state.date` в методе `render()` будет другим, и поэтому ренедер компонента будет включать обновлённое время и React соответственно обновит DOM.
319319

320320
5) Если компонент `Clock` когда-либо удаляется из DOM, React вызывает хук жизненного цикла `componentWillUnmount()`, таким образом таймер будет остановлен и удален.
321321

@@ -325,7 +325,7 @@ ReactDOM.render(
325325

326326
### Не изменяйте состояние напрямую {#do-not-modify-state-directly}
327327

328-
В следующем примере повторной отрисовки компонента не происходит:
328+
В следующем примере повторного рендера не происходит:
329329

330330
```js
331331
// Неправильно
@@ -436,13 +436,13 @@ function FormattedDate(props) {
436436
}
437437
```
438438

439-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/zKRqNB?editors=0010)
439+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/zKRqNB?editors=0010)
440440

441441
Этот процесс называется "сверху вниз" ("top-down") потоком данных или "однонаправленным" ("unidirectional") потоком данных. Состояние всегда принадлежит определённому компоненту, а любые производные этого состояния могут влиять только на компоненты, находящиеся «ниже» в дереве компонентов.
442442

443443
Если представить иерархию компонентов как водопад пропс, то состояние каждого компонента похоже на дополнительный источник, который сливается с водопадом в произвольной точке, но также течёт вниз.
444444

445-
Чтобы показать, что все компоненты действительно изолированы, создадим компонент `App`, который отрисовывает три компонента `<Clock>`:
445+
Чтобы показать, что все компоненты действительно изолированы, создадим компонент `App`, который рендерит три компонента `<Clock>`:
446446

447447
```js{4-6}
448448
function App() {
@@ -461,7 +461,7 @@ ReactDOM.render(
461461
);
462462
```
463463

464-
[**Попробовать на CodePen**](http://codepen.io/gaearon/pen/vXdGmd?editors=0010)
464+
[**Посмотреть на CodePen**](http://codepen.io/gaearon/pen/vXdGmd?editors=0010)
465465

466466
У каждого компонента `Clock` есть собственное состояние таймера, которое обновляется независимо от других компонентов.
467467

0 commit comments

Comments
 (0)