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/docs/jsx-in-depth.md
+15-15Lines changed: 15 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ redirect_from:
13
13
- "docs/jsx-in-depth-ko-KR.html"
14
14
---
15
15
16
-
В принципе JSX просто предоставляет синтаксический сахар для функции `React.createElement(component, props, ...children)`. Этот JSX-код:
16
+
JSX является синтаксическим сахаром для функции `React.createElement(component, props, ...children)`. Этот JSX-код:
17
17
18
18
```js
19
19
<MyButton color="blue" shadowSize={2}>
@@ -47,13 +47,13 @@ React.createElement(
47
47
)
48
48
```
49
49
50
-
Если вы хотите проверить, как какой-нибудь определённый JSX-код компилируется в JavaScript, можете попробовать[онлайн-компилятор Babel](babel://jsx-simple-example).
50
+
Если вы хотите проверить, как JSX-код компилируется в JavaScript, попробуйте[онлайн-компилятор Babel](babel://jsx-simple-example).
51
51
52
52
## Указание типа React-элемента {#specifying-the-react-element-type}
53
53
54
54
Первая часть JSX тега определяет тип React-элемента.
55
55
56
-
Слова в типах пишутся с большой буквы и указывают, что JSX-тег ссылается на React-компонент. Эти теги компилируются в прямые ссылки на именованные переменные, поэтому, если вы используете JSX-выражение `<Foo />`, то `Foo` должен быть в области видимости.
56
+
Типы, написанные с большой буквы, указывают, что JSX-тег ссылается на React-компонент. Эти теги компилируются в прямую ссылку на именованную переменную, поэтому, если вы используете JSX-выражение `<Foo />`, то `Foo` должен быть в области видимости.
57
57
58
58
### React должен находиться в области видимости {#react-must-be-in-scope}
59
59
@@ -135,7 +135,7 @@ function HelloWorld() {
135
135
136
136
### Выбор типа во время исполнения {#choosing-the-type-at-runtime}
137
137
138
-
Вы не можете использовать выражение как тип React-элемента. Если вы хотите использовать выражение для того, чтобы указать тип элемента, то сперва вам нужно присвоить его в переменную, начинающуюся с заглавной буквы. Часто это подходит, когда вам нужно отрендерить компонент в зависимости от ваших пропсов:
138
+
В качестве типа React-элемента нельзя использовать выражение. Если вы хотите использовать выражение, чтобы указать тип элемента, присвойте его в переменную, начинающуюся с заглавной буквы. Это подходит для рендера компонентов в зависимости от ваших пропсов:
139
139
140
140
```js{10,11}
141
141
import React from 'react';
@@ -176,13 +176,13 @@ function Story(props) {
176
176
177
177
### JavaScript-выражения как пропсы {#javascript-expressions-as-props}
178
178
179
-
Вы можете передавать любые JavaScript-выражения как пропсы, заключая их в `{}`. К примеру, в этом JSX:
179
+
Вы можете передавать любые JavaScript-выражения как пропсы, обернув их в `{}`. К примеру, в этом JSX:
180
180
181
181
```js
182
182
<MyComponent foo={1+2+3+4} />
183
183
```
184
184
185
-
Для `MyComponent`, значение `props.foo` будет `10`, потому что выражение `1 + 2 + 3 + 4` будет вычислено.
185
+
Для `MyComponent` значение `props.foo` будет равно`10`, потому что выражение `1 + 2 + 3 + 4` будет вычислено.
186
186
187
187
Оператор `if` и цикл `for` не являются выражениями в JavaScript, поэтому их нельзя непосредственно использовать в JSX. Вместо этого, вы можете окружить ими JSX-код. К примеру:
188
188
@@ -210,7 +210,7 @@ function NumberDescriber(props) {
210
210
<MyComponent message={'hello world'} />
211
211
```
212
212
213
-
Когда вы передаёте строковый литерал, его значение будет HTML-"разэкранировано". Поэтому эти два JSXвыражения эквивалентны:
213
+
Когда вы передаёте строковый литерал, все его возможные символы будут преобразованы в соответствующие HTML-сущности. Поэтому эти два JSX-выражения будут эквивалентны:
214
214
215
215
```js
216
216
<MyComponent message="<3"/>
@@ -234,7 +234,7 @@ function NumberDescriber(props) {
234
234
235
235
### Атрибуты расширения {#spread-attributes}
236
236
237
-
Если у вас уже есть `props` в виде объекта и выхотите передать их все в JSX, вы можете использовать оператор `...` («spread operator») для передачи всего объекта-пропсов целиком. Эти два компонента эквивалентны:
237
+
Если у вас уже есть пропсы внутри объекта `props` и вы хотите передать их в JSX, вы можете использовать оператор расширения `...` («spread operator»). Эти два компонента эквивалентны:
238
238
239
239
```js{7}
240
240
function App1() {
@@ -247,7 +247,7 @@ function App2() {
247
247
}
248
248
```
249
249
250
-
Вы так же можете выбрать конкретные пропсы, которые ваш компонент будет использовать, передавая все остальные пропсы с помощью spread operator.
250
+
Вы так же можете выбрать конкретные пропсы, которые ваш компонент будет использовать, передавая все остальные пропсы с помощью оператора расширения.
251
251
252
252
```js{2}
253
253
const Button = props => {
@@ -270,7 +270,7 @@ const App = () => {
270
270
В приведённом выше примере, проп `kind` используется безопасно и *не* передаётся в элемент `<button>`, находящийся в DOM.
271
271
Все остальные пропсы передаются с помощью объекта `...other`, что делает этот компонент очень гибким. Вы можете видеть, что он передаёт пропсы `onClick` и `children`.
272
272
273
-
Атрибуты расширения могут быть полезны, но они так же легко позволяют передавать ненужные пропсы в компоненты или передавать невалидные HTMLатрибуты в DOM. Мы рекомендуем использовать этот синтаксис с осторожностью.
273
+
Атрибуты расширения могут быть полезны, однако, также они позволяют передать ненужные пропсы в компоненты или невалидные HTML-атрибуты в DOM. Мы рекомендуем использовать этот синтаксис с осторожностью.
274
274
275
275
## Дочерние компоненты в JSX {#children-in-jsx}
276
276
@@ -284,13 +284,13 @@ const App = () => {
284
284
<MyComponent>Привет, мир!</MyComponent>
285
285
```
286
286
287
-
Это корректный JSX-код, в котором значение `props.children` в `MyComponent` будет строкой `"Привет, мир!"`. HTML в таком коде "разэкранируется", поэтому на JSX можно писать также как и на обычном HTML:
287
+
Это корректный JSX-код, в котором значение `props.children` в `MyComponent` будет строкой `"Привет, мир!"`. HTML в таком коде «разэкранируется», поэтому JSX можно писать также как HTML:
288
288
289
289
```html
290
290
<div>This is valid HTML & JSX at the same time.</div>
291
291
```
292
292
293
-
JSX удаляет пробелы в начале и в конце строки. Он также удаляет пустые строки. Новая строка, примыкающая в тегу будет удалена; новые строки, находящиеся посередине строковых литералов, сжимаются в один пробел. Следующие три примера кода рендерят одинаковый результат:
293
+
JSX удаляет пустые строки и пробелы в начале и в конце строки. Новая строка, примыкающая к тегу будет удалена. Новые строки между строковых литералов сжимаются в один пробел. Следующие три примера кода рендерят одинаковый результат:
294
294
295
295
```js
296
296
<div>Hello World</div>
@@ -357,7 +357,7 @@ render() {
357
357
<MyComponent>{'foo'}</MyComponent>
358
358
```
359
359
360
-
Часто это бывает полезно при рендеринге списка JSX-выражений произвольной длины. Например, эта запись рендерит HTML-список:
360
+
Часто это бывает полезно при рендере списка JSX-выражений произвольной длины. Например, эта запись рендерит HTML-список:
361
361
362
362
```js{2,9}
363
363
function Item(props) {
@@ -425,7 +425,7 @@ function ListOfTenThings() {
425
425
<div>{true}</div>
426
426
```
427
427
428
-
Этот подход может быть полезным для рендеринга по условию. Вот пример, где JSX рендерит `<Header />`, если `showHeader` равняется `true`:
428
+
Этот подход может быть полезным для рендера по условию. Вот пример, где JSX рендерит `<Header />`, если `showHeader` равняется `true`:
429
429
430
430
```js{2}
431
431
<div>
@@ -434,7 +434,7 @@ function ListOfTenThings() {
434
434
</div>
435
435
```
436
436
437
-
Один нюанс заключается в том, что React будет рендерить [«ложные» (falsy) значения](https://developer.mozilla.org/en-US/docs/Glossary/Falsy), такие как число `0`. Код ниже ведёт себя не так, как вы могли ожидать, так как `0` будет отображён, если массив `props.messages` пуст:
437
+
Есть один нюанс в том, что React будет рендерить [«ложные» (falsy) значения](https://developer.mozilla.org/en-US/docs/Glossary/Falsy), такие как число `0`. Код ниже ведёт себя не так, как вы могли ожидать, так как `0` будет отображён, если массив `props.messages` пуст:
0 commit comments