4.4 ReactDOMServer
Объект ReactDOMServer
позволяет отрисовывать компоненты в статическую разметку.
Как правило, он используется на сервере Node:
// ES модули
import ReactDOMServer from 'react-dom/server';
// CommonJS
var ReactDOMServer = require('react-dom/server');
Следующие методы могут использоваться в средах сервера и браузера.
renderToString()
renderToStaticMarkup()
Следующие дополнительные методы зависят от пакета (stream
), который
доступен только на сервере и не будет работать в браузере.
renderToNodeStream()
renderToStaticNodeStream()
renderToString()
ReactDOMServer.renderToString(element)
Отрисовывает элемент React в его исходный HTML. Это следует использовать только на сервере. React вернет HTML-строку. Вы можете использовать этот метод для генерации HTML-кода на сервере и отправки разметки по первоначальному запросу для более быстрой загрузки страниц и для того, чтобы поисковые системы могли сканировать ваши страницы для целей SEO.
Если вы вызываете ReactDOM.render()
в версиях ранее 16 или ReactDOM.hydrate()
начиная с 16 версии на узле, который уже содержит эту отрисованную
сервером разметку, React сохранит его и только присоединит обработчики событий,
позволяя вам получить очень производительную первую загрузку.
renderToStaticMarkup()
ReactDOMServer.renderToStaticMarkup(element)
Подобен renderToString
, за исключением того, что это не создает дополнительных
атрибутов DOM, таких как data-reactid
, которые React использует внутри. Он полезен,
если вы хотите использовать React как простой статический генератор страниц, так
как удаление лишних атрибутов может сэкономить множество байт.
renderToNodeStream()
ReactDOMServer.renderToNodeStream(element)
Доступен с 16 версии. Отрисовывает элемент React в его исходный HTML. Возвращает поток Readable
, который выводит
строку HTML. Вывод HTML этим потоком в точности равен результату, возвращаемому
ReactDOMServer.renderToString
. Вы можете использовать этот метод для генерации
HTML-кода на сервере и отправки разметки по первоначальному запросу для более быстрой
загрузки страниц и для того, чтобы поисковые системы могли сканировать
ваши страницы для целей SEO.
Если вы вызываете ReactDOM.hydrate()
на узле, который уже имеет эту,
отрисованную сервером, разметку, React сохранит его и присоединит только обработчики
событий, позволяя вам иметь очень производительную первоначальную загрузку.
Замечание.
Актуально только для сервера.
Данный API недоступен в браузере. Поток, возвращенный из этого метода, вернет поток байтов в кодировке utf-8. Если вам нужен поток в другой кодировке, посмотрите проект вроде iconv-lite , который предоставляет потоки преобразования для перекодирования текста.
renderToStaticNodeStream()
ReactDOMServer.renderToStaticNodeStream(element)
Доступен с 16 версии. Подобен renderToNodeStream
, за исключением того, что это не создает
дополнительные атрибуты DOM, которые React использует внутренне, такие как
data-reactroot
. Это полезно, если вы хотите использовать React как простой
генератор статических страниц, так как удаление лишних атрибутов может сэкономить байты.
HTML-вывод этого потока в точности равен результату,
возвращаемому ReactDOMServer.renderToStaticMarkup
.
Если вы планируете использовать React на клиенте, чтобы сделать разметку
интерактивной, не используйте этот метод. Вместо этого,
используйте renderToNodeStream
на сервере и ReactDOM.hydrate()
на клиенте.
Замечание.
Актуально только для сервера.
Данный API недоступен в браузере. Поток, возвращенный из этого метода, вернет поток байтов в кодировке utf-8. Если вам нужен поток в другой кодировке, посмотрите проект вроде iconv-lite , который предоставляет потоки преобразования для перекодирования текста.