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/learn/writing-markup-with-jsx.md
+18-19Lines changed: 18 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,9 @@
1
1
---
2
2
title: Написание разметки с помощью JSX
3
3
---
4
-
5
4
<Intro>
6
5
7
-
*JSX* — это синтаксическое расширение для JavaScript, которое позволяет писать разметку в стиле HTML прямо в файлах JavaScript. Хотя существуют и другие способы написания компонентов, большинство разработчиков React предпочитают краткость JSX, и большинство кодовых баз его используют.
6
+
*JSX* — это синтаксическое расширение для JavaScript, которое позволяет писать разметку в стиле HTML внутри файла JavaScript. Хотя существуют и другие способы написания компонентов, большинство разработчиков React предпочитают краткость JSX, и большинство кодовых баз его используют.
8
7
9
8
</Intro>
10
9
@@ -16,7 +15,7 @@ title: Написание разметки с помощью JSX
16
15
17
16
</YouWillLearn>
18
17
19
-
## JSX: Встраивание разметки в JavaScript {/*jsx-putting-markup-into-javascript*/}
18
+
## JSX: Разметка внутри JavaScript {/*jsx-putting-markup-into-javascript*/}
20
19
21
20
Веб построен на HTML, CSS и JavaScript. Долгие годы веб-разработчики хранили контент в HTML, дизайн — в CSS, а логику — в JavaScript, часто в отдельных файлах! Контент размечался внутри HTML, в то время как логика страницы жила отдельно в JavaScript:
22
21
@@ -36,27 +35,27 @@ JavaScript
36
35
37
36
</DiagramGroup>
38
37
39
-
Но по мере того, как веб становился более интерактивным, логика всё чаще определяла контент. JavaScript отвечал за HTML! Именно поэтому **в React логика рендеринга и разметка находятся вместе в одном месте — компонентах.**
38
+
Но по мере того, как веб становился более интерактивным, логика всё чаще определяла контент. JavaScript отвечал за HTML! Именно поэтому **в React логика рендеринга и разметка живут вместе в одном месте — компонентах.**
40
39
41
40
<DiagramGroup>
42
41
43
-
<Diagramname="writing_jsx_sidebar"height={330}width={325}alt="React-компонент со смешанным HTML и JavaScript из предыдущих примеров. Имя функции - Sidebar, которая вызывает функцию isLoggedIn, выделенную желтым цветом. Внутри функции, выделенной фиолетовым, находится тег p из предыдущего примера и тег Form, ссылающийся на компонент, показанный на следующем рисунке.">
42
+
<Diagramname="writing_jsx_sidebar"height={330}width={325}alt="React-компонент со смешанным HTML и JavaScript из предыдущих примеров. Имя функции — Sidebar, которая вызывает функцию isLoggedIn, выделенную желтым цветом. Внутри функции, выделенной фиолетовым, находится тег p из предыдущего примера и тег Form, ссылающийся на компонент, показанный на следующем рисунке.">
44
43
45
44
React-компонент `Sidebar.js`
46
45
47
46
</Diagram>
48
47
49
-
<Diagramname="writing_jsx_form"height={330}width={325}alt="React-компонент со смешанным HTML и JavaScript из предыдущих примеров. Имя функции - Form, содержащее два обработчика onClick и onSubmit, выделенных желтым цветом. После обработчиков идет HTML, выделенный фиолетовым цветом. HTML содержит элемент form с вложенным элементом input, каждый из которых имеет проп onClick.">
48
+
<Diagramname="writing_jsx_form"height={330}width={325}alt="React-компонент со смешанным HTML и JavaScript из предыдущих примеров. Имя функции — Form, содержащее два обработчика onClick и onSubmit, выделенных желтым цветом. После обработчиков следует HTML, выделенный фиолетовым. HTML содержит элемент form с вложенным элементом input, каждый из которых имеет пропс onClick.">
50
49
51
50
React-компонент `Form.js`
52
51
53
52
</Diagram>
54
53
55
54
</DiagramGroup>
56
55
57
-
Сохранение логики рендеринга кнопки и её разметки вместе гарантирует, что они будут синхронизированы при каждом изменении. И наоборот, несвязанные детали, такие как разметка кнопки и разметка боковой панели, изолированы друг от друга, что делает их изменение по отдельности более безопасным.
56
+
Совместное хранение логики рендеринга кнопки и её разметки гарантирует, что они будут синхронизированы при каждом изменении. И наоборот, несвязанные детали, такие как разметка кнопки и разметка боковой панели, изолированы друг от друга, что делает их изменение по отдельности более безопасным.
58
57
59
-
Каждый React-компонент — это JavaScript-функция, которая может содержать разметку, которую React отображает в браузере. React-компоненты используют синтаксическое расширение под названием JSX для представления этой разметки. JSX очень похож на HTML, но он немного строже и может отображать динамическую информацию. Лучший способ понять это — преобразовать некоторую HTML-разметку в JSX-разметку.
58
+
Каждый React-компонент — это функция JavaScript, которая может содержать разметку, которую React отображает в браузере. React-компоненты используют синтаксическое расширение под названием JSX для представления этой разметки. JSX очень похож на HTML, но он немного строже и может отображать динамическую информацию. Лучший способ понять это — преобразовать некоторую HTML-разметку в JSX-разметку.
60
59
61
60
<Note>
62
61
@@ -82,7 +81,7 @@ JSX и React — это две разные вещи. Они часто испо
82
81
</ul>
83
82
```
84
83
85
-
И вы хотите вставить его в свой компонент:
84
+
И вы хотите поместить его в свой компонент:
86
85
87
86
```js
88
87
exportdefaultfunctionTodoList() {
@@ -122,11 +121,11 @@ img { height: 90px }
122
121
123
122
</Sandpack>
124
123
125
-
Это связано с тем, что JSX строже и имеет несколько больше правил, чем HTML! Если вы прочитаете сообщения об ошибках выше, они помогут вам исправить разметку, или вы можете следовать приведенному ниже руководству.
124
+
Это потому, что JSX строже и имеет несколько больше правил, чем HTML! Если вы прочитаете сообщения об ошибках выше, они помогут вам исправить разметку, или вы можете следовать приведенному ниже руководству.
126
125
127
126
<Note>
128
127
129
-
В большинстве случаев сообщения об ошибках React на экране помогут вам найти проблему. Прочитайте их, если застряли!
128
+
В большинстве случаев сообщения об ошибках React на экране помогут вам найти проблему. Прочитайте их, если застрянете!
130
129
131
130
</Note>
132
131
@@ -153,7 +152,7 @@ img { height: 90px }
153
152
```
154
153
155
154
156
-
Если вы не хотите добавлять лишний `<div>` в свою разметку, вы можете использовать вместо него`<>` и `</>`:
155
+
Если вы не хотите добавлять лишний `<div>` в свою разметку, вы можете вместо этого использовать`<>` и `</>`:
157
156
158
157
```js {1,11}
159
158
<>
@@ -181,7 +180,7 @@ JSX выглядит как HTML, но под капотом он преобра
181
180
182
181
### 2. Закрывайте все теги {/*2-close-all-the-tags*/}
183
182
184
-
JSX требует явного закрытия тегов: теги с самозакрытием, такие как `<img>`, должны стать `<img />`, а оборачивающие теги, такие как `<li>oranges`, должны быть написаны как `<li>oranges</li>`.
183
+
JSX требует явного закрытия тегов: самозакрывающиеся теги, такие как `<img>`, должны стать `<img />`, а оборачивающие теги, такие как `<li>oranges`, должны быть написаны как `<li>oranges</li>`.
185
184
186
185
Вот как выглядят закрытые изображение и элементы списка Хеди Ламарр:
187
186
@@ -200,11 +199,11 @@ JSX требует явного закрытия тегов: теги с сам
200
199
</>
201
200
```
202
201
203
-
### 3. camelCase <s>все</s> почти всё! {/*3-camelcase-salls-most-of-the-things*/}
202
+
### 3. camelCase <s>все</s> большинство вещей! {/*3-camelcase-salls-most-of-the-things*/}
204
203
205
-
JSX преобразуется в JavaScript, а атрибуты, написанные в JSX, становятся ключами объектов JavaScript. В ваших собственных компонентах вы часто захотите считывать эти атрибуты в переменные. Но у JavaScript есть ограничения на имена переменных. Например, их имена не могут содержать дефисы или быть зарезервированными словами, такими как `class`.
204
+
JSX преобразуется в JavaScript, а атрибуты, написанные в JSX, становятся ключами объектов JavaScript. В ваших собственных компонентах вы часто захотите считывать эти атрибуты в переменные. Но JavaScript имеет ограничения на имена переменных. Например, их имена не могут содержать дефисы или быть зарезервированными словами, такими как `class`.
206
205
207
-
Именно поэтому в React многие атрибуты HTML и SVG пишутся в camelCase. Например, вместо `stroke-width` вы используете `strokeWidth`. Поскольку `class` является зарезервированным словом, в React вместо него используется `className`, названный в честь [соответствующего свойства DOM](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
206
+
Именно поэтому в React многие атрибуты HTML и SVG пишутся в camelCase. Например, вместо `stroke-width` вы используете `strokeWidth`. Поскольку `class` является зарезервированным словом, в React вместо него используется `className`, названный в честь [соответствующего DOM-свойства](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
208
207
209
208
```js {4}
210
209
<img
@@ -222,9 +221,9 @@ JSX преобразуется в JavaScript, а атрибуты, написа
222
221
223
222
</Pitfall>
224
223
225
-
### Профессиональный совет: Используйте конвертер JSX {/*pro-tip-use-a-jsx-converter*/}
224
+
### Профессиональный совет: Используйте JSX-конвертер {/*pro-tip-use-a-jsx-converter*/}
226
225
227
-
Преобразование всех этих атрибутов в существующей разметке может быть утомительным! Мы рекомендуем использовать [конвертер](https://transform.tools/html-to-jsx) для преобразования вашего существующего HTML и SVG в JSX. Конвертеры очень полезны на практике, но все же стоит понимать, что происходит, чтобы вы могли уверенно писать JSX самостоятельно.
226
+
Преобразование всех этих атрибутов в существующей разметке может быть утомительным! Мы рекомендуем использовать [конвертер](https://transform.tools/html-to-jsx) для перевода вашего существующего HTML и SVG в JSX. Конвертеры очень полезны на практике, но все же стоит понимать, что происходит, чтобы вы могли уверенно писать JSX самостоятельно.
228
227
229
228
Вот ваш окончательный результат:
230
229
@@ -272,7 +271,7 @@ img { height: 90px }
272
271
273
272
#### Преобразуйте HTML в JSX {/*convert-some-html-to-jsx*/}
274
273
275
-
Этот HTML был вставлен в компонент, но это не валидный JSX. Исправьте его:
274
+
Этот HTML был вставлен в компонент, но он не является валидным JSX. Исправьте его:
0 commit comments