Skip to content

Commit f8e5b2c

Browse files
authored
Update reference-react-dom.md
1 parent d2d7dd7 commit f8e5b2c

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

content/docs/reference-react-dom.md

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ category: Reference
66
permalink: docs/react-dom.html
77
---
88

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')`.
1010

1111
## Обзор {#overview}
1212

@@ -20,11 +20,11 @@ permalink: docs/react-dom.html
2020

2121
### Поддержка браузерами {#browser-support}
2222

23-
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.
2424

2525
> Примечание
2626
>
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). Пожалуйста учтите, что этот путь официально не поддерживается и вы принимаете решение на свой страх и риск.
2828
2929
* * *
3030

@@ -38,19 +38,19 @@ ReactDOM.render(element, container[, callback])
3838

3939
Рендерит React-элемент в DOM-элемент, переданный в аргумент `container` и возвращает [ссылку](/docs/more-about-refs.html) на компонент (или возвращает `null` для [компонентов без состояния](/docs/components-and-props.html#functional-and-class-components)).
4040

41-
Если React-элемент ранее был отрендерен в `container`, то повторный вызов произведёт его обновление и изменит соответствующую часть DOM, чтобы она содержала последние изменения.
41+
Если React-элемент уже был ранее отрендерен в `container`, то повторный вызов произведёт его обновление и изменит соответствующую часть DOM, чтобы она содержала последние изменения.
4242

43-
Если предоставляется дополнительный колбэк, он будет выполнен после того, как компонент будет отрендерен или обновлен.
43+
Если дополнительно был предоставлен колбэк, он будет вызван после того, как компонент отрендерится или обновится.
4444

4545
> Примечание:
4646
>
4747
> `ReactDOM.render()` управляет содержимым передаваемого вами узла контейнера. Любые существующие элементы DOM внутри заменяются при первом вызове. Более поздние вызовы используют алгоритм отслеживания изменений React DOM для эффективного обновления.
4848
>
49-
> `ReactDOM.render()` не изменяет узел контейнера (изменяет только дочерние элементы контейнера). Возможно вставить компонент в существующий узел DOM без перезаписи существующих дочерних элементов.
49+
> `ReactDOM.render()` не изменяет узел контейнера (изменяет только дочерние элементы контейнера). Если нужно, можно вставить компонент в существующий узел DOM без перезаписи существующих дочерних элементов.
5050
>
5151
> `ReactDOM.render()` в настоящее время возвращает ссылку на корневой экземпляр `ReactComponent`. Однако использование этого возвращаемого значения является устаревшим
5252
> и этого следует избегать, потому что в будущих версиях React компоненты могут отображаться асинхронно в некоторых случаях. Если вам нужна ссылка на корневой экземпляр `ReactComponent`, предпочтительным решением является прикрепить
53-
> [ссылку на колбэк](/docs/more-about-refs.html#the-ref-callback-attribute) к корневому элементу.
53+
> [реф (ref) на колбэк](/docs/more-about-refs.html#the-ref-callback-attribute) к корневому элементу.
5454
>
5555
> Использование `ReactDOM.render()` для гидратации контейнера, отрендеренного на сервере, объявлено устаревшим и будет удалено в React 17. Вместо этого используйте метод [`hydrate()`](#hydrate).
5656
@@ -62,13 +62,13 @@ ReactDOM.render(element, container[, callback])
6262
ReactDOM.hydrate(element, container[, callback])
6363
```
6464

65-
То же, что и [`render()`](#render), но используется для гидратации контейнера, HTML-содержимое которого было отрендеренного с помощью [`ReactDOMServer`](/docs/react-dom-server.html). React попытается присоединить обработки событий к существующей разметке.
65+
То же, что и [`render()`](#render), но используется для гидратации контейнера, HTML-содержимое которого было отрендеренно с помощью [`ReactDOMServer`](/docs/react-dom-server.html). React попытается присоединить обработчики событий к уже существующей разметке.
6666

67-
React ожидает, что отрендеренное содержимое идентично на сервере, и на клиенте. Он может исправлять различия в текстовом содержимом, но вам следует рассматривать несоответствия как ошибки и исправлять их. В режиме разработки React предупреждает о несоответствиях во время гидратации. Нет никаких гарантий, что различия атрибутов будут исправлены в случае несовпадений. Это важно по соображениям производительности, поскольку в большинстве приложений несоответствия встречаются редко, и поэтому проверка всей разметки будет непомерно дорогой.
67+
React ожидает, что отрендеренное содержимое идентично на сервере, и на клиенте. Текстовые различия в контенте могут быть переписаны поверх, но вам следует рассматривать такие нестыковки как ошибки и исправлять их. В режиме разработки React предупреждает о несоответствиях во время гидратации. Нет никаких гарантий, что различия атрибутов будут исправлены в случае несовпадений. Это важно по соображениям производительности, поскольку в большинстве приложений несоответствия встречаются редко, и поэтому проверка всей разметки будет непомерно дорогой.
6868

69-
Если атрибут отдельного элемента или текстовое содержимое неизбежно отличается на сервере и клиенте (например, отметка времени), вы можете отключить предупреждение, добавив к элементу `suppressHydrationWarning={true}`. Он работает только на один уровень в глубину, и задумана как лазейка. Не злоупотребляйте ею. Если это не текстовый контент, React по-прежнему не будет пытаться его исправить, поэтому он может оставаться несовместимым до будущих обновлений.
69+
Если атрибут отдельного элемента или текстовое содержимое неизбежно отличается на сервере и клиенте (например, отметка времени), вы можете отключить предупреждение, добавив к элементу `suppressHydrationWarning={true}`. Он работает только на один уровень в глубину, и задумана как лазейка. Не злоупотребляйте ею. Если это не текстовый контент, React по-прежнему не будет пытаться его исправить, поэтому он может оставаться несовместимым c обновлённым в будущем вариантом.
7070

71-
Если вам преднамеренно нужно отрендерить что-то другое на сервере и клиенте, вы можете выполнить двухпроходный рендеринг. Компоненты, которые рендерят что-то другое на клиенте, могут читать переменную состояния, такую как `this.state.isClient`, которую вы можете установить в `true` в `componentDidMount()`. Таким образом, начальный этап рендеринга будет отображать тот же контент, что и сервер, избегая несовпадений, но дополнительный этап будет происходить синхронно сразу после гидратации. Обратите внимание, что этот подход замедлит ваши компоненты, потому что они должны рендерится дважды, поэтому используйте его с осторожностью.
71+
Если вам нужно намеренно отрендерить что-то другое на сервере и клиенте, вы можете выполнить двухпроходный рендеринг. Компоненты, которые рендерят что-то другое на клиенте, могут читать переменную состояния, такую как `this.state.isClient`, которую вы можете установить в `true` в `componentDidMount()`. Таким образом, начальный этап рендеринга будет отображать тот же контент, что и сервер, избегая несовпадений, но дополнительный этап будет происходить синхронно сразу после гидратации. Обратите внимание, что этот подход замедлит ваши компоненты, потому что они должны рендерится дважды, поэтому используйте его с осторожностью.
7272

7373
Не забывайте про работу с вашим приложением при медленных соединениях. JavaScript-код может загружаться значительно позже исходного HTML-рендеринга, поэтому, если вы рендерите что-то другое только для клиента, переход может вызвать раздражение. Тем не менее, при правильном выполнении может оказаться полезным отобразить «оболочку» приложения на сервере и показать только некоторые дополнительные виджеты на клиенте. Чтобы узнать, как это сделать без проблем с разметкой, обратитесь к объяснению в предыдущем абзаце.
7474

@@ -80,25 +80,26 @@ React ожидает, что отрендеренное содержимое и
8080
ReactDOM.unmountComponentAtNode(container)
8181
```
8282

83-
Удалите смотированный компонент React из DOM и очистите его обработчики событий и состояние. Если в контейнер не было смотировано ни одного компонента, вызов этой функции ничего не делает. Возвращает `true`, если компонент был размонтирован, и `false` если нет компонента для размонтирования.
83+
Удаляет смотированный компонент React из DOM и очищает его обработчики событий и состояние. Если в контейнер не было смотировано ни одного компонента, вызов этой функции ничего не делает. Возвращает `true`, если компонент был размонтирован, и `false` если нет компонента для размонтирования.
84+
8485
* * *
8586

8687
### `findDOMNode()` {#finddomnode}
8788

8889
> Примечание:
8990
>
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)
9192
9293
```javascript
9394
ReactDOM.findDOMNode(component)
9495
```
95-
Если этот компонент был смотирован в DOM, он возвращает соответствующий DOM элемент браузера. Этот метод полезен для чтения значений из DOM, таких как значения полей формы, и произведения измерений DOM. **В большинстве случаев, вы можете присоеденить реф к узлу DOM и совсем избежать использования `findDOMNode`.**
96+
Если этот компонент был смотирован в DOM, он возвращает соответствующий DOM элемент браузера. Этот метод полезен для чтения напрямую из DOM (например, чтение значений полей формы) или произведения измерений DOM. **В большинстве случаев, вы можете присоеденить реф к узлу DOM и полностью избежать использования `findDOMNode`.**
9697

9798
Когда компонент рендерится в `null` или `false`, `findDOMNode` возвращает `null`. Когда компонент рендерится в строку, `findDOMNode` возвращает текстовый узел DOM, содержащий это значение. Начиная с React 16, компонент может возвращать фрагмент с несколькими дочерними элементами, и в этом случае `findDOMNode` возвращает DOM-узел, соответствующий первому непустому дочернему элементу.
9899

99100
> Примечание:
100101
>
101-
> `findDOMNode` работает только с смотированными компонентами (то есть компонентами, которые были размещены в DOM). Если вы попытаетесь вызвать этот метод для компонента, который еще не был смонтирован (например, вызовете `findDOMNode()` в методе `render()` для компонента, который еще не был создан), будет сгенерировано исключение.
102+
> `findDOMNode` работает только с смотированными компонентами (то есть компонентами, которые были размещены в DOM). Если вы попытаетесь вызвать этот метод для компонента, который еще не был смонтирован (например, вызовете `findDOMNode()` в методе `render()` для компонента, который ещё не был создан), будет сгенерировано исключение.
102103
>
103104
> `findDOMNode` не может быть использован с функциональными компонентами.
104105

0 commit comments

Comments
 (0)