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: content/tutorial/tutorial.md
+22-22Lines changed: 22 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ redirect_from:
16
16
17
17
## Прежде чем начать {#before-we-start-the-tutorial}
18
18
19
-
По ходу этого руководства мы создадим небольшую игру. **Возможно, вы захотите пропустить это, потому что вы не создаёте игру, но вам стоит попробовать.**Походы, которые мы изучим в этом руководстве являются базовыми при создании любого React-приложения. Их освоение даст вам глубокое понимание React.
19
+
По ходу этого руководства мы создадим небольшую игру. **Возможно, вы захотите пропустить это, потому что вы не создаёте игры, но вам стоит попробовать.**Подходы, которые мы изучим в этом руководстве являются базовыми при создании любого React-приложения. Их освоение даст вам глубокое понимание React.
20
20
21
21
>Совет
22
22
>
@@ -27,18 +27,18 @@ redirect_from:
27
27
*[Настройка оружения](#setup-for-the-tutorial) даст вам **отправную точку** для изучения руководства.
28
28
*[Обзор](#overview) научит вас **основам** React: компоненты, пропсы и состояние.
29
29
*[Создание игры](#completing-the-game) научит вас **наиболее распространённым подходам** в React-разработке.
30
-
*[Добавив Путешествие Во Времени](#adding-time-travel) вы получите **более глубокое понимание** особенностей и сильных сторон React.
30
+
*[Добавив Путешествие Во Времени](#adding-time-travel) вы получите **более глубокое понимание** особенностей и сильных сторон React.
31
31
32
-
Вам не обязательно проходить все части за раз, чтобы получить пользу от этого руководства. Изучите столько, сколько можете - даже если это будет одна или две секции.
32
+
Вам не обязательно проходить все части за раз, чтобы получить пользу от этого руководства. Изучите столько, сколько можете, даже если это будет одна или две секции.
33
33
34
-
Вполне нормально копировать код по мере прохождения руководства. Но мы советуем набирать его самим. Это позволит вам подключить мышечную память и улучшит понимание.
34
+
Вполне нормально копировать код по мере изучения руководства. Но мы советуем набирать его самим. Это позволит вам подключить мышечную память и улучшить понимание.
35
35
36
36
37
37
### Что мы собираемся писать? {#what-are-we-building}
38
38
39
39
В этом руководстве мы покажем как создать интерактивную игру крестики-нолики на React.
40
40
41
-
Результат вы можете посмотреть здесь **[Готовая Игра](https://codepen.io/gaearon/pen/gWWZgR?editors=0010)**. Если её код вам ни о чем не говорит, или вы не знакомы с синтаксисом - не беспокойтесь. Цель этого руководства - помочь вам разобраться с React и его синтаксисом.
41
+
Результат вы можете посмотреть здесь **[Готовая Игра](https://codepen.io/gaearon/pen/gWWZgR?editors=0010)**. Если её код вам ни о чем не говорит, или вы не знакомы с синтаксисом, не беспокойтесь. Цель этого руководства - помочь вам разобраться с React и его синтаксисом.
42
42
43
43
Мы советуем вам поиграть в готовые крестики-нолики, прежде чем приниматься за руководство. Одна из особенностей, которую вы можете заметить - это нумерованный список справа от игрового поля. Этот список отображает историю всех игровых ходов, и обновляется по мере игры.
44
44
@@ -47,9 +47,9 @@ redirect_from:
47
47
48
48
### Предварительные требования {#prerequisites}
49
49
50
-
Мы будем полагать, что вы немного знакомы с HTML и JavaScript. Однако вы сможете изучать руководство, даже если вы пришли с других языков программирования. Мы также полагаем, что вы знакомы с такими понятиями программирования как функции, объекты, массивы и, в меньшей степени, классы.
50
+
Мы будем полагать, что вы немного знакомы с HTML и JavaScript. Однако вы сможете изучать руководство, даже если вы пришли с других языков программирования. Мы также полагаем, что вы знакомы с такими понятиями программирования как функции, объекты, массивы и, в меньшей степени, классы.
51
51
52
-
Если вам нужен обзор по JavaScript, мы рекомендуем прочитать [вот этот учебник](https://developer.mozilla.org/ru/docs/Web/JavaScript/A_re-introduction_to_JavaScript). Отметим, что мы используем некоторые особенности из ES6 - последней версии JavaScript. Такие как [стрелочные функции](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions), [классы](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes), объявления [`let`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/let), и [`const`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/const). Вы можете воспользоваться [Babel REPL](babel://es5-syntax-example), чтобы узнать во что компилируется код на ES6.
52
+
Если вам нужен обзор JavaScript, мы рекомендуем прочитать [вот этот учебник](https://developer.mozilla.org/ru/docs/Web/JavaScript/A_re-introduction_to_JavaScript). Отметим, что мы используем некоторые особенности из ES6 - последней версии JavaScript - такие как[стрелочные функции](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions), [классы](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes), объявления [`let`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/let), и [`const`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/const). Вы можете воспользоваться [Babel REPL](babel://es5-syntax-example), чтобы узнать во что компилируется код на ES6.
53
53
54
54
## Настройка окружения {#setup-for-the-tutorial}
55
55
@@ -65,7 +65,7 @@ redirect_from:
65
65
66
66
### Вариант 2: Локальное окружение для разработки {#setup-option-2-local-development-environment}
67
67
68
-
Это не является обязательным и не требуется руководством!
68
+
Это не является обязательным и не требуется этим руководством!
69
69
70
70
<br>
71
71
@@ -75,7 +75,7 @@ redirect_from:
75
75
76
76
Эти настройки потребуют больше сил, но позволят продолжать работу с использованием выбранного вами редактора. Вот что нужно сделать:
77
77
78
-
1. Убедиться, что у вас установлена последняя версия [Node.js](https://nodejs.org/en/).
78
+
1. Убедиться, что у вас установлена последняя версия [Node.js](https://nodejs.org/en/).
79
79
2. Выполнить [инструкции по установке Create React App](/docs/create-a-new-react-app.html#create-react-app) для создания нового проекта.
80
80
81
81
```bash
@@ -102,9 +102,9 @@ del *
102
102
cd ..
103
103
```
104
104
105
-
4. Создайте файл с именем `index.css` в папку`src/` и добавьте в него [вот этот CSS код](https://codepen.io/gaearon/pen/oWWQNa?editors=0100).
105
+
4. Создайте файл с именем `index.css` в папке`src/` и добавьте в него [вот этот CSS код](https://codepen.io/gaearon/pen/oWWQNa?editors=0100).
106
106
107
-
5. Создайте файл с именем `index.js` в папку`src/` и добавьте в него [этот JS код](https://codepen.io/gaearon/pen/oWWQNa?editors=0010).
107
+
5. Создайте файл с именем `index.js` в папке`src/` и добавьте в него [этот JS код](https://codepen.io/gaearon/pen/oWWQNa?editors=0010).
108
108
109
109
6. В начало файла `index.js` в папке`src/` добавьте следующие три строчки:
110
110
@@ -129,9 +129,9 @@ import './index.css';
129
129
130
130
### Что такое React? {#what-is-react}
131
131
132
-
React - это декларативная, эффективная и гибкая JavaScript библиотека для создания пользовательских интерфейсов. Она позволяет вам составлять сложный UI из маленьких изолированных кусочков кода, называемых "компоненты".
132
+
React - это декларативная, эффективная и гибкая JavaScript библиотека для создания пользовательских интерфейсов. Она позволяет вам составлять сложный UI из маленьких изолированных кусочков кода, называемых "компонентами".
133
133
134
-
React имеет несколько разных видов компонент, но мы начнём с подклассов `React.Component`:
134
+
React имеет несколько разных видов компонентов, но мы начнём с подклассов `React.Component`:
135
135
136
136
```javascript
137
137
classShoppingListextendsReact.Component {
@@ -152,9 +152,9 @@ class ShoppingList extends React.Component {
152
152
// Пример использования: <ShoppingList name="Марк" />
153
153
```
154
154
155
-
Скоро мы перейдём к этим забавным, похожим на XML, тегам. Мы используем компоненты, чтобы объяснить React, что мы хотим увидеть на экране. Когда наш данные изменятся, React эффективно обновит и перерисует наши компоненты.
155
+
Скоро мы перейдём к этим забавным, похожим на XML, тегам. Мы используем компоненты, чтобы объяснить React, что мы хотим увидеть на экране. Когда наши данные изменятся, React эффективно обновит и перерисует наши компоненты.
156
156
157
-
Здесь, `ShoppingList` - это пример **классового компонента React**, или **тип React-компонента**. Компонент принимает параметры, которые называются пропсы (`props`, сокращение от `properties` - свойства), и возвращает из метода `render()` иерархию представлений для отображения.
157
+
Здесь, `ShoppingList` - это пример **классового компонента React**, или **тип React-компонента**. Компонент принимает параметры, которые называются пропсами (`props`, сокращение от `properties` - свойства), и возвращает из метода `render()` иерархию представлений для отображения.
158
158
159
159
Метод `render` возвращает *описание* того, что вы ходите увидеть на экране. React берет это описание и отображает результат. Точнее, `render` возвращает **React-элемент**, который является легковесным описанием того, что нужно отрендерить. Большинство React-разработчиков используют специальный синтаксис под названием "JSX" для упрощения описания структуры. Синтаксис `<div />` преобразовывается в `React.createElement('div')`. Пример выше равнозначен вот этому:
[Смотрите полную версию.](babel://tutorial-expanded-version)
169
169
170
-
Если вам интересно, то `createElement()` более подробно описан в [Документации](/docs/react-api.html#createelement), но мы не будем им пользоваться в этом руководства. Вместо этого мы продолжим пользоваться JSX.
170
+
Если вам интересно, то `createElement()` более подробно описан в [Документации](/docs/react-api.html#createelement), но мы не будем им пользоваться в этом руководстве. Вместо этого мы продолжим пользоваться JSX.
171
171
172
-
JSX обладает всей мощью JavaScript. В JSX вы можете использовать *любые* JavaScript выражения внутри фигурных скобок. Каждый React-элемент является JavaScript объектов, в котором вы можете хранить переменные или которым вы можете оперировать внутри программы.
172
+
JSX обладает всей мощью JavaScript. В JSX вы можете использовать *любые* JavaScript выражения внутри фигурных скобок. Каждый React-элемент является JavaScript объектом, в котором вы можете хранить переменные или которым вы можете оперировать внутри программы.
173
173
174
174
Приведённый выше компонент `ShoppingList` только рендерит встроенные DOM-компоненты вроде `<div />` или `<li />`. Но вы также можете составлять и рендерить собственные компоненты. Например, теперь вы можете ссылаться на весь компонент со списком покупок написав `<ShoppingList />`. Каждый React-компонент инкапсулирован и может использоваться независимо, это позволяет создавать сложный UI из простых компонентов.
175
175
@@ -181,7 +181,7 @@ JSX обладает всей мощью JavaScript. В JSX вы можете
181
181
182
182
Исследуя этот код, вы обнаружите, что у нас есть три React-компонента:
183
183
184
-
* Square (Квадрат)
184
+
* Square (Клетка)
185
185
* Board (Поле)
186
186
* Game (Игра)
187
187
@@ -190,7 +190,7 @@ JSX обладает всей мощью JavaScript. В JSX вы можете
190
190
### Передача данных через пропсы {#passing-data-through-props}
191
191
192
192
Для начала, давайте попробуем передать некоторые данные из нашего `Board`-компонента в компонент `Square`.
193
-
Изменим метод `renderSquare` внутри `Board`, чтобы он передавал в `Square` проп с назнанием`value`:
193
+
Изменим метод `renderSquare` внутри `Board`, чтобы он передавал в `Square` проп с названием`value`:
194
194
195
195
196
196
```js{3}
@@ -218,7 +218,7 @@ class Square extends React.Component {
@@ -262,7 +262,7 @@ class Square extends React.Component {
262
262
>}
263
263
>```
264
264
>
265
-
>Обратите внимание что в `onClick={() => alert('click')}`, мы передаём *функцию* в качестве значения проп `onClick`. Она отработает только при клике. Опускать `() =>` и присать сразу `onClick={alert('click')}` - это распространённая ошибка. Такой код будет выдавать сообщение каждый раз, когда компонент перерендеривается..
265
+
>Обратите внимание что в `onClick={() => alert('click')}`, мы передаём *функцию* в качестве значения проп `onClick`. Она отработает только при клике. Опускать `() =>` и присать сразу `onClick={alert('click')}` - это распространённая ошибка. Такой код будет выдавать сообщение каждый раз, когда компонент перерендеривается.
266
266
267
267
Дальше мы хотим, чтобы Square-компонент "запоминал", что по ниму кликнули и отрисовывал "X".
268
268
Для "запоминания" компоненты используют **состояние**.
@@ -340,7 +340,7 @@ class Square extends React.Component {
340
340
341
341
React DevTools позволяют просматривать пропсы и состояние ваших React-компонентов.
342
342
343
-
После установки React DevTools, вы можете кликнуть правой кнопкой мыши на любом элемента страницы и нажать `Inspect` (`Просмотреть код`) для открытия инструментов разработчика. Вкладка React будет крайней справа.
343
+
После установки React DevTools, вы можете кликнуть правой кнопкой мыши на любом элементе страницы и нажать `Inspect` (`Просмотреть код`) для открытия инструментов разработчика. Вкладка React будет крайней справа.
344
344
345
345
346
346
**Внимание, чтобы это работало на CodePen нужно сделать ещё несколько действий:**
0 commit comments