|
1 | 1 | ---
|
2 | 2 | id: rendering-elements
|
3 |
| -title: Rendering Elements |
| 3 | +title: Рендеринг элементов |
4 | 4 | permalink: docs/rendering-elements.html
|
5 | 5 | redirect_from:
|
6 | 6 | - "docs/displaying-data.html"
|
7 | 7 | prev: introducing-jsx.html
|
8 | 8 | next: components-and-props.html
|
9 | 9 | ---
|
10 | 10 |
|
11 |
| -Elements are the smallest building blocks of React apps. |
| 11 | +Элементы — мельчайшие кирпичики React-приложений. |
12 | 12 |
|
13 |
| -An element describes what you want to see on the screen: |
| 13 | +Элемент описывает то, что вы хотите увидеть на экране: |
14 | 14 |
|
15 | 15 | ```js
|
16 | 16 | const element = <h1>Hello, world</h1>;
|
17 | 17 | ```
|
18 | 18 |
|
19 |
| -Unlike browser DOM elements, React elements are plain objects, and are cheap to create. React DOM takes care of updating the DOM to match the React elements. |
| 19 | +В отличие от DOM-элементов, элементы React — это простые объекты, не отнимающие много ресурсов. React DOM обновляет DOM, чтобы он соответствовал переданным React-элементам. |
20 | 20 |
|
21 |
| ->**Note:** |
| 21 | +>**Примечание:** |
22 | 22 | >
|
23 |
| ->One might confuse elements with a more widely known concept of "components". We will introduce components in the [next section](/docs/components-and-props.html). Elements are what components are "made of", and we encourage you to read this section before jumping ahead. |
| 23 | +>Элементы можно перепутать с более известной концепцией «компонентов». С компонентами мы ознакомимся в [следующей главе](/docs/components-and-props.html). Элементы — это то, «из чего сделаны» компоненты, и мы рекомендуем вам дочитать эту главу, прежде чем двигаться дальше. |
24 | 24 |
|
25 |
| -## Rendering an Element into the DOM {#rendering-an-element-into-the-dom} |
| 25 | +## Рендеринг элемента в DOM {#rendering-an-element-into-the-dom} |
26 | 26 |
|
27 |
| -Let's say there is a `<div>` somewhere in your HTML file: |
| 27 | +Допустим, в вашем HTML-файле есть `<div>`: |
28 | 28 |
|
29 | 29 | ```html
|
30 | 30 | <div id="root"></div>
|
31 | 31 | ```
|
32 | 32 |
|
33 |
| -We call this a "root" DOM node because everything inside it will be managed by React DOM. |
| 33 | +Мы назовём его "корневым" узлом DOM, так как всё, что находится в нём, будет управляться React DOM. |
34 | 34 |
|
35 |
| -Applications built with just React usually have a single root DOM node. If you are integrating React into an existing app, you may have as many isolated root DOM nodes as you like. |
| 35 | +Обычно в приложениях, написанных полностью на React, есть только один корневой элемент. При встраивании React в существующее приложение вы можете создать столько независимых корневых элементов, сколько посчитаете нужным. |
36 | 36 |
|
37 |
| -To render a React element into a root DOM node, pass both to `ReactDOM.render()`: |
| 37 | +Для рендеринга React-элемента в корневом узле DOM вызовите `ReactDOM.render()` с React-элементом и корневым DOM узлом в качестве аргументов: |
38 | 38 |
|
39 | 39 | `embed:rendering-elements/render-an-element.js`
|
40 | 40 |
|
41 | 41 | [](codepen://rendering-elements/render-an-element)
|
42 | 42 |
|
43 |
| -It displays "Hello, world" on the page. |
| 43 | +На странице будет написано "Hello, world". |
44 | 44 |
|
45 |
| -## Updating the Rendered Element {#updating-the-rendered-element} |
| 45 | +## Обновление элементов на странице {#updating-the-rendered-element} |
46 | 46 |
|
47 |
| -React elements are [immutable](https://en.wikipedia.org/wiki/Immutable_object). Once you create an element, you can't change its children or attributes. An element is like a single frame in a movie: it represents the UI at a certain point in time. |
| 47 | +Элементы React [иммутабельны](https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82). После создания элемента, нельзя изменить его потомков или атрибуты. Элемент похож на кадр в фильме: он отражает состояние интерфейса в конкретный момент времени. |
48 | 48 |
|
49 |
| -With our knowledge so far, the only way to update the UI is to create a new element, and pass it to `ReactDOM.render()`. |
| 49 | +Пока что, мы знаем только один способ обновить интерфейс — это создать новый элемент и передать его в `ReactDOM.render()`. |
50 | 50 |
|
51 |
| -Consider this ticking clock example: |
| 51 | +Рассмотрим пример с часами: |
52 | 52 |
|
53 | 53 | `embed:rendering-elements/update-rendered-element.js`
|
54 | 54 |
|
55 | 55 | [](codepen://rendering-elements/update-rendered-element)
|
56 | 56 |
|
57 |
| -It calls `ReactDOM.render()` every second from a [`setInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval) callback. |
| 57 | +В этом примере `ReactDOM.render()` вызывается каждую секунду с помощью колбэка [`setInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval) |
58 | 58 |
|
59 |
| ->**Note:** |
| 59 | +>**Примечание:** |
60 | 60 | >
|
61 |
| ->In practice, most React apps only call `ReactDOM.render()` once. In the next sections we will learn how such code gets encapsulated into [stateful components](/docs/state-and-lifecycle.html). |
| 61 | +>На практике большинство React-приложений вызывают `ReactDOM.render()` только один раз. В следующем разделе вы узнаете как можно обновлять интерфейс при помощи [компонента с состоянием](/docs/state-and-lifecycle.html). |
62 | 62 | >
|
63 |
| ->We recommend that you don't skip topics because they build on each other. |
| 63 | +>Мы рекомендуем не пропускать разделы, поскольку в них используется информация из предыдущих разделов. |
64 | 64 |
|
65 |
| -## React Only Updates What's Necessary {#react-only-updates-whats-necessary} |
| 65 | +## React обновляет только то, что необходимо {#react-only-updates-whats-necessary} |
66 | 66 |
|
67 |
| -React DOM compares the element and its children to the previous one, and only applies the DOM updates necessary to bring the DOM to the desired state. |
| 67 | +React DOM сравнивает элемент и его потомков с предыдущей версией и вносит в DOM только те изменения, которые необходимы, чтобы на странице оказался новый элемент. |
68 | 68 |
|
69 |
| -You can verify by inspecting the [last example](codepen://rendering-elements/update-rendered-element) with the browser tools: |
| 69 | +Вы можете убедиться в этом на [последнем примере](codepen://rendering-elements/update-rendered-element) с помощью инструментов разработчика в браузере: |
70 | 70 |
|
71 |
| - |
| 71 | + |
72 | 72 |
|
73 |
| -Even though we create an element describing the whole UI tree on every tick, only the text node whose contents has changed gets updated by React DOM. |
| 73 | +Несмотря на то, что мы создаем элемент, описывающий все UI-дерево, каждую секунду React DOM изменяет только текстовый узел, содержимое которого изменилось. |
74 | 74 |
|
75 |
| -In our experience, thinking about how the UI should look at any given moment rather than how to change it over time eliminates a whole class of bugs. |
| 75 | +Проще описать, как интерфейс выглядит в конкретный момент, чем как он изменяется с течением времени. По нашему опыту, такой подход позволяет избавиться от целого класса ошибок. |
0 commit comments