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/lists-and-keys.md
+10-10Lines changed: 10 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -6,9 +6,9 @@ prev: conditional-rendering.html
6
6
next: forms.html
7
7
---
8
8
9
-
Сначала посмотрим как мы работаем со списками в JavaScript.
9
+
Сначала давайте вспомним, как работать со списками в JavaScript.
10
10
11
-
В коде ниже мы используем функцию [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), чтобы удвоить значения в массиве `numbers`. Мы присваиваем массив, возвращаемый из `map()`, в переменную`doubled` и выводим её в консоль:
11
+
В коде ниже мы используем функцию [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), чтобы удвоить значения в массиве `numbers`. Мы присваиваем массив, возвращаемый из `map()`, переменной`doubled` и выводим её в консоль:
12
12
13
13
```javascript{2}
14
14
const numbers = [1, 2, 3, 4, 5];
@@ -22,9 +22,9 @@ console.log(doubled);
22
22
23
23
### Рендер нескольких компонентов {#rendering-multiple-components}
24
24
25
-
Вы можете создавать коллекции элементов и добавлять их в JSX [include them in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) с помощью фигурных скобок `{}`.
25
+
Вы можете создавать коллекции элементов и [включать их в JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) с помощью фигурных скобок `{}`.
26
26
27
-
Ниже, мы проходим по массиву `numbers`, используя функцию JavaScript [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), и возвращаем элемент `<li>` в каждой итерации. В итоге мы присваиваем получившийся массив элементов в `listItems`:
27
+
Ниже, мы проходим по массиву `numbers`, используя функцию JavaScript [`map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), и возвращаем элемент `<li>` в каждой итерации. Получившийся массив элементов мы сохраним в `listItems`:
Затем добавляем массив `listItems` внутрь элемента `<ul>` и [рендерим в DOM](/docs/rendering-elements.html#rendering-an-element-into-the-dom):
36
+
Затем включаем массив `listItems` внутрь элемента `<ul>` и [рендерим его в DOM](/docs/rendering-elements.html#rendering-an-element-into-the-dom):
37
37
38
38
```javascript{2}
39
39
ReactDOM.render(
@@ -72,7 +72,7 @@ ReactDOM.render(
72
72
73
73
Когда вы запустите данный код, то увидите предупреждение о том, что у каждого элемента массива должен быть ключ. «Ключ» – это специальный строковый атрибут, который вам необходимо добавлять при создании списка элементов. Мы обсудим почему это важно в следующей главе.
74
74
75
-
Добавим `key` к нашему списку элементов внутри `numbers.map()` и поправим проблему его отсутствия.
75
+
Чтобы исправить проблему с неуказанными ключами, добавим каждому элементу в списке атрибут `key`.
Мы не рекомендуем использовать индексы как ключи если порядок элементов может поменяться. Это негативно скажется на производительности и может вызвать проблемы с состоянием компонента. Посмотрите статью Робина Покорни (Robin Pokorny) с [подробным объяснением негативного влияния использования индексов как ключей](https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318). Если вы решите не присваивать ключ к элементу списка, то React по умолчанию будет использовать индексы как ключи.
133
+
Мы не рекомендуем использовать индексы как ключи если порядок элементов может поменяться. Это негативно скажется на производительности и может вызвать проблемы с состоянием компонента. Посмотрите статью Робина Покорни (Robin Pokorny) с [объяснением, почему индексы-ключи приводят к проблемам](https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318). Если вы опустите ключ для элемента в списке, то React по умолчанию будет использовать индексы как ключи.
134
134
135
135
Вот [подробное объяснение о том, почему ключи необходимы](/docs/reconciliation.html#recursing-on-children) если вы захотели узнать больше.
136
136
137
137
### Извлечение компонентов с ключами {#extracting-components-with-keys}
138
138
139
139
Ключи имеют значение только в пределах окружающего массива.
140
140
141
-
Например если вы [извлекаете](/docs/components-and-props.html#extracting-components) компонент `ListItem`, то нужно указывать ключ для `<ListItem />` в массиве, вместо элементов`<li>` внутри самого `ListItem`.
141
+
Например, если вы [извлекаете](/docs/components-and-props.html#extracting-components) компонент `ListItem`, то нужно указывать ключ для `<ListItem />` в массиве, а не в элементах`<li>` внутри самого `ListItem`.
142
142
143
143
**Пример неправильного использования ключей**
144
144
@@ -280,7 +280,7 @@ function NumberList(props) {
280
280
}
281
281
```
282
282
283
-
JSX позволяет [встроить любое выражение](/docs/introducing-jsx.html#embedding-expressions-in-jsx) в фигурные скобки, так мы можем заинлайнить результат `map()`:
283
+
JSX позволяет [встроить любое выражение](/docs/introducing-jsx.html#embedding-expressions-in-jsx) в фигурные скобки, так мы можем включить результат `map()`:
284
284
285
285
```js{5-8}
286
286
function NumberList(props) {
@@ -298,4 +298,4 @@ function NumberList(props) {
298
298
299
299
[**Try it on CodePen**](https://codepen.io/gaearon/pen/BLvYrB?editors=0010)
300
300
301
-
Иногда это приводит к более чистому коду, но таким стилем так же можно злоупотреблять. Как и в JavaScript вам придется самостоятельно решать стоит ли извлекать код в переменную для читабельности. Держите в голове, что если содержимое `map()` является слишком сложным, вероятно это отличная возможность чтобы [извлечь компонент](/docs/components-and-props.html#extracting-components).
301
+
Иногда это приводит к более чистому коду, но бывает и наоборот. Как и в любом JavaScript-коде, вам придется самостоятельно решать стоит ли извлекать код в переменную для читабельности. Держите в голове, что если содержимое `map()` является слишком сложным, вероятно это отличная возможность чтобы . Не забывайте, что если код внутри `map()` слишком громоздкий, имеет смысл [извлечь его в отдельный компонент](/docs/components-and-props.html#extracting-components).
0 commit comments