renderToStaticNodeStream
renderToStaticNodeStream отображает неинтерактивное дерево React в потоке Node.js Readable Stream.
const stream = renderToStaticNodeStream(reactNode, options?)
Ссылка
renderToStaticNodeStream(reactNode, options?)
На сервере вызовите renderToStaticNodeStream для получения потока Node.js Readable Stream.
import { renderToStaticNodeStream } from 'react-dom/server';
const stream = renderToStaticNodeStream(<Page />);
stream.pipe(response); См. дополнительные примеры ниже.
Поток будет генерировать неинтерактивный HTML-вывод ваших React-компонентов.
Параметры
-
reactNode: Узел React, который вы хотите отобразить в HTML. Например, JSX-элемент, такой как<Page />. -
необязательно
options: Объект для рендеринга на сервере.-
необязательно
identifierPrefix: Строковый префикс, который React использует для идентификаторов, генерируемыхuseId. Полезно для предотвращения конфликтов при использовании нескольких корневых элементов на одной странице.
-
необязательно
Возвращаемое значение
Поток Node.js Readable Stream, который выводит строку HTML. Полученный HTML не может быть гидратирован на клиенте.
Примечания
-
renderToStaticNodeStreamвывод не может быть гидратирован. -
Этот метод будет ожидать завершения всех границ ожидания перед возвратом любого вывода.
-
Начиная с React 18, этот метод буферизует весь свой вывод, поэтому он фактически не предоставляет никаких преимуществ потоковой передачи.
-
Возвращаемый поток является байтовым потоком, закодированным в utf-8. Если вам нужен поток в другом кодировании, обратите внимание на проект, такой как iconv-lite, который предоставляет потоки преобразования для транскодирования текста.
Использование
Отображение дерева React в виде статического HTML в поток Node.js Readable Stream
Вызовите renderToStaticNodeStream для получения потока Node.js Readable Stream, который можно передать в ответ сервера:
import { renderToStaticNodeStream } from 'react-dom/server';
// The route handler syntax depends on your backend framework
app.use('/', (request, response) => {
const stream = renderToStaticNodeStream(<Page />);
stream.pipe(response);
}); Поток будет генерировать начальный неинтерактивный HTML-вывод ваших React-компонентов.
Подводные камни
Этот метод отображает неинтерактивный HTML, который нельзя гидратировать. Это полезно, если вы хотите использовать React в качестве простого генератора статических страниц или если вы рендерите полностью статический контент, например, электронные письма.
Интерактивные приложения должны использовать renderToPipeableStream на сервере и hydrateRoot на клиенте.
© 2013–present Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://18.react.dev/reference/react-dom/server/renderToStaticNodeStream