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/reference-react-dom.md
+16-15Lines changed: 16 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ category: Reference
6
6
permalink: docs/react-dom.html
7
7
---
8
8
9
-
Если вы загружаете React с помощью тега `<script>`, перечисленные ниже высокоуровневые API-методы доступны через глобальный `ReactDOM`. Если вы используете ES6 с npm, можете написать `import ReactDOM from 'react-dom'`, а в случае ES5 с npm — `var ReactDOM = require('react-dom')`.
9
+
Когда вы загружаете React с помощью тега `<script>`, глобальный `ReactDOM` предоставляет вам доступ к высокоуровневым API-методам. Если вы используете ES6 с npm, можете написать `import ReactDOM from 'react-dom'`, а в случае ES5 с npm — `var ReactDOM = require('react-dom')`.
React поддерживает все популярные браузеры, включая Internet Explorer 9 и выше, хотя [понадобятся полифилы](/docs/javascript-environment-requirements.html) для более старых браузеров, например, IE 9 или IE 10.
23
+
React поддерживает все популярные браузеры, включая Internet Explorer 9 и выше, хотя [понадобятся полифилы](/docs/javascript-environment-requirements.html) для более старых браузеров, например, IE 9 или IE 10.
24
24
25
25
> Примечание
26
26
>
27
-
> Мы не поддерживаем старые браузеры, в которых отсутствуют ES5-методы, но чтобы обеспечить работу ваших приложений в старых браузерах вы можете подключить шимы [es5-shim и es5-sham](https://github.com/es-shims/es5-shim). Но учтите, мы не сможем вам помочь, если вы предпочтёте сделать это.
27
+
> Мы не поддерживаем старые браузеры, в которых отсутствуют ES5-методы. Возможно, вам удастся обойти эту проблему старых браузеров, если вы подключите шимы [es5-shim и es5-sham](https://github.com/es-shims/es5-shim). Пожалуйста учтите, что этот путь официально не поддерживается и вы принимаете решение на свой страх и риск.
Рендерит React-элемент в DOM-элемент, переданный в аргумент `container` и возвращает [ссылку](/docs/more-about-refs.html) на компонент (или возвращает `null` для [компонентов без состояния](/docs/components-and-props.html#functional-and-class-components)).
40
40
41
-
Если React-элемент ранее был отрендерен в `container`, то повторный вызов произведёт его обновление и изменит соответствующую часть DOM, чтобы она содержала последние изменения.
41
+
Если React-элемент уже был ранее отрендерен в `container`, то повторный вызов произведёт его обновление и изменит соответствующую часть DOM, чтобы она содержала последние изменения.
42
42
43
-
Если предоставляется дополнительный колбэк, он будет выполнен после того, как компонент будет отрендерен или обновлен.
43
+
Если дополнительно был предоставлен колбэк, он будет вызван после того, как компонент отрендерится или обновится.
44
44
45
45
> Примечание:
46
46
>
47
47
> `ReactDOM.render()` управляет содержимым передаваемого вами узла контейнера. Любые существующие элементы DOM внутри заменяются при первом вызове. Более поздние вызовы используют алгоритм отслеживания изменений React DOM для эффективного обновления.
48
48
>
49
-
> `ReactDOM.render()` не изменяет узел контейнера (изменяет только дочерние элементы контейнера). Возможно вставить компонент в существующий узел DOM без перезаписи существующих дочерних элементов.
49
+
> `ReactDOM.render()` не изменяет узел контейнера (изменяет только дочерние элементы контейнера). Если нужно, можно вставить компонент в существующий узел DOM без перезаписи существующих дочерних элементов.
50
50
>
51
51
> `ReactDOM.render()` в настоящее время возвращает ссылку на корневой экземпляр `ReactComponent`. Однако использование этого возвращаемого значения является устаревшим
52
52
> и этого следует избегать, потому что в будущих версиях React компоненты могут отображаться асинхронно в некоторых случаях. Если вам нужна ссылка на корневой экземпляр `ReactComponent`, предпочтительным решением является прикрепить
53
-
> [ссылку на колбэк](/docs/more-about-refs.html#the-ref-callback-attribute) к корневому элементу.
53
+
> [реф (ref) на колбэк](/docs/more-about-refs.html#the-ref-callback-attribute) к корневому элементу.
54
54
>
55
55
> Использование `ReactDOM.render()` для гидратации контейнера, отрендеренного на сервере, объявлено устаревшим и будет удалено в React 17. Вместо этого используйте метод [`hydrate()`](#hydrate).
То же, что и [`render()`](#render), но используется для гидратации контейнера, HTML-содержимое которого было отрендеренного с помощью [`ReactDOMServer`](/docs/react-dom-server.html). React попытается присоединить обработки событий к существующей разметке.
65
+
То же, что и [`render()`](#render), но используется для гидратации контейнера, HTML-содержимое которого было отрендеренно с помощью [`ReactDOMServer`](/docs/react-dom-server.html). React попытается присоединить обработчики событий к уже существующей разметке.
66
66
67
-
React ожидает, что отрендеренное содержимое идентично на сервере, и на клиенте. Он может исправлять различия в текстовом содержимом, но вам следует рассматривать несоответствия как ошибки и исправлять их. В режиме разработки React предупреждает о несоответствиях во время гидратации. Нет никаких гарантий, что различия атрибутов будут исправлены в случае несовпадений. Это важно по соображениям производительности, поскольку в большинстве приложений несоответствия встречаются редко, и поэтому проверка всей разметки будет непомерно дорогой.
67
+
React ожидает, что отрендеренное содержимое идентично на сервере, и на клиенте. Текстовые различия в контенте могут быть переписаны поверх, но вам следует рассматривать такие нестыковки как ошибки и исправлять их. В режиме разработки React предупреждает о несоответствиях во время гидратации. Нет никаких гарантий, что различия атрибутов будут исправлены в случае несовпадений. Это важно по соображениям производительности, поскольку в большинстве приложений несоответствия встречаются редко, и поэтому проверка всей разметки будет непомерно дорогой.
68
68
69
-
Если атрибут отдельного элемента или текстовое содержимое неизбежно отличается на сервере и клиенте (например, отметка времени), вы можете отключить предупреждение, добавив к элементу `suppressHydrationWarning={true}`. Он работает только на один уровень в глубину, и задумана как лазейка. Не злоупотребляйте ею. Если это не текстовый контент, React по-прежнему не будет пытаться его исправить, поэтому он может оставаться несовместимым до будущих обновлений.
69
+
Если атрибут отдельного элемента или текстовое содержимое неизбежно отличается на сервере и клиенте (например, отметка времени), вы можете отключить предупреждение, добавив к элементу `suppressHydrationWarning={true}`. Он работает только на один уровень в глубину, и задумана как лазейка. Не злоупотребляйте ею. Если это не текстовый контент, React по-прежнему не будет пытаться его исправить, поэтому он может оставаться несовместимым c обновлённым в будущем вариантом.
70
70
71
-
Если вам преднамеренно нужно отрендерить что-то другое на сервере и клиенте, вы можете выполнить двухпроходный рендеринг. Компоненты, которые рендерят что-то другое на клиенте, могут читать переменную состояния, такую как `this.state.isClient`, которую вы можете установить в `true` в `componentDidMount()`. Таким образом, начальный этап рендеринга будет отображать тот же контент, что и сервер, избегая несовпадений, но дополнительный этап будет происходить синхронно сразу после гидратации. Обратите внимание, что этот подход замедлит ваши компоненты, потому что они должны рендерится дважды, поэтому используйте его с осторожностью.
71
+
Если вам нужно намеренно отрендерить что-то другое на сервере и клиенте, вы можете выполнить двухпроходный рендеринг. Компоненты, которые рендерят что-то другое на клиенте, могут читать переменную состояния, такую как `this.state.isClient`, которую вы можете установить в `true` в `componentDidMount()`. Таким образом, начальный этап рендеринга будет отображать тот же контент, что и сервер, избегая несовпадений, но дополнительный этап будет происходить синхронно сразу после гидратации. Обратите внимание, что этот подход замедлит ваши компоненты, потому что они должны рендерится дважды, поэтому используйте его с осторожностью.
72
72
73
73
Не забывайте про работу с вашим приложением при медленных соединениях. JavaScript-код может загружаться значительно позже исходного HTML-рендеринга, поэтому, если вы рендерите что-то другое только для клиента, переход может вызвать раздражение. Тем не менее, при правильном выполнении может оказаться полезным отобразить «оболочку» приложения на сервере и показать только некоторые дополнительные виджеты на клиенте. Чтобы узнать, как это сделать без проблем с разметкой, обратитесь к объяснению в предыдущем абзаце.
74
74
@@ -80,25 +80,26 @@ React ожидает, что отрендеренное содержимое и
80
80
ReactDOM.unmountComponentAtNode(container)
81
81
```
82
82
83
-
Удалите смотированный компонент React из DOM и очистите его обработчики событий и состояние. Если в контейнер не было смотировано ни одного компонента, вызов этой функции ничего не делает. Возвращает `true`, если компонент был размонтирован, и `false` если нет компонента для размонтирования.
83
+
Удаляет смотированный компонент React из DOM и очищает его обработчики событий и состояние. Если в контейнер не было смотировано ни одного компонента, вызов этой функции ничего не делает. Возвращает `true`, если компонент был размонтирован, и `false` если нет компонента для размонтирования.
84
+
84
85
* * *
85
86
86
87
### `findDOMNode()` {#finddomnode}
87
88
88
89
> Примечание:
89
90
>
90
-
> `findDOMNode` — это лазейка, используемая для доступа к базовому узлу DOM. В большинстве случаев использование этого метода не рекомендуется, поскольку он пробивает абстракцию компонента. [Метод устарел в `StrictMode`.](/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage)
91
+
> `findDOMNode` — это лазейка, используемая для доступа к базовому узлу DOM. В большинстве случаев использование этого метода не рекомендуется, поскольку он нарушает абстракцию компонента. [Метод устарел в `StrictMode`.](/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage)
91
92
92
93
```javascript
93
94
ReactDOM.findDOMNode(component)
94
95
```
95
-
Если этот компонент был смотирован в DOM, он возвращает соответствующий DOM элемент браузера. Этот метод полезен для чтения значений из DOM, таких как значения полей формы, и произведения измерений DOM. **В большинстве случаев, вы можете присоеденить реф к узлу DOM и совсем избежать использования `findDOMNode`.**
96
+
Если этот компонент был смотирован в DOM, он возвращает соответствующий DOM элемент браузера. Этот метод полезен для чтения напрямую из DOM (например, чтение значений полей формы) или произведения измерений DOM. **В большинстве случаев, вы можете присоеденить реф к узлу DOM и полностью избежать использования `findDOMNode`.**
96
97
97
98
Когда компонент рендерится в `null` или `false`, `findDOMNode` возвращает `null`. Когда компонент рендерится в строку, `findDOMNode` возвращает текстовый узел DOM, содержащий это значение. Начиная с React 16, компонент может возвращать фрагмент с несколькими дочерними элементами, и в этом случае `findDOMNode` возвращает DOM-узел, соответствующий первому непустому дочернему элементу.
98
99
99
100
> Примечание:
100
101
>
101
-
> `findDOMNode` работает только с смотированными компонентами (то есть компонентами, которые были размещены в DOM). Если вы попытаетесь вызвать этот метод для компонента, который еще не был смонтирован (например, вызовете `findDOMNode()` в методе `render()` для компонента, который еще не был создан), будет сгенерировано исключение.
102
+
> `findDOMNode` работает только с смотированными компонентами (то есть компонентами, которые были размещены в DOM). Если вы попытаетесь вызвать этот метод для компонента, который еще не был смонтирован (например, вызовете `findDOMNode()` в методе `render()` для компонента, который ещё не был создан), будет сгенерировано исключение.
102
103
>
103
104
> `findDOMNode` не может быть использован с функциональными компонентами.
0 commit comments