resumeAndPrerenderToNodeStream
resumeAndPrerenderToNodeStream продолжает пререндеренное дерево React до статической HTML-строки с помощью потока Node.js..
const {prelude, postponed} = await resumeAndPrerenderToNodeStream(reactNode, postponedState, options?)
Примечание
Этот API предназначен только для Node.js. В средах с веб-потоками, таких как Deno и современные edge-среды выполнения, вместо него следует использовать prerender.
Справочник
resumeAndPrerenderToNodeStream(reactNode, postponedState, options?)
Вызовите resumeAndPrerenderToNodeStream, чтобы продолжить пререндеренное дерево React до статической HTML-строки.
import { resumeAndPrerenderToNodeStream } from 'react-dom/static';
import { getPostponedState } from 'storage';
async function handler(request, writable) {
const postponedState = getPostponedState(request);
const { prelude } = await resumeAndPrerenderToNodeStream(<App />, JSON.parse(postponedState));
prelude.pipe(writable);
} На клиенте вызовите hydrateRoot, чтобы сделать HTML, созданный на сервере, интерактивным.
Больше примеров приведено ниже.
Параметры
-
reactNode: узел React, который вы передали в вызовprerender(или предыдущий вызовresumeAndPrerenderToNodeStream). Например, JSX-элемент, такой как<App />. Предполагается, что он представляет весь документ, поэтому компонентAppдолжен отрисовывать тег<html>. -
postponedState: непрозрачный объектpostpone, возвращённый API пререндеринга и загруженный из места, где вы его сохранили (например, из Redis, файла или S3). -
необязательно
options: объект с параметрами потоковой передачи.-
необязательно
signal: сигнал отмены, позволяющий отменить серверный рендеринг и отрисовать оставшуюся часть на клиенте. -
необязательно
onError: функция обратного вызова, вызываемая при любой ошибке на сервере — как восстанавливаемой, так и невосстанавливаемой. По умолчанию она вызывает толькоconsole.error. Если вы переопределите её, чтобы записывать отчёты о сбоях, не забудьте также вызватьconsole.error.
-
необязательно
Возвращает
resumeAndPrerenderToNodeStream возвращает Promise:
- Если рендеринг выполнен успешно, Promise будет разрешён объектом, содержащим:
-
prelude: веб-поток с HTML. Этот поток можно использовать для отправки ответа частями или прочитать его целиком в строку. -
postponed: непрозрачный объект, который можно сериализовать в JSON и передать вresumeToNodeStreamилиresumeAndPrerenderToNodeStream, если выполнениеresumeAndPrerenderToNodeStreamбыло прервано.
-
- Если рендеринг завершится ошибкой, Promise будет отклонён. Используйте это, чтобы вывести оболочку-заполнитель.
Ограничения
Параметр nonce недоступен при пререндеринге. Значения nonce должны быть уникальны для каждого запроса. Если вы используете nonce для защиты приложения с помощью CSP, включать значение nonce непосредственно в результат пререндеринга было бы неуместно и небезопасно.
Примечание
Когда следует использовать resumeAndPrerenderToNodeStream?
Статический API resumeAndPrerenderToNodeStream используется для статической генерации на стороне сервера (SSG). В отличие от renderToString, resumeAndPrerenderToNodeStream ожидает загрузки всех данных, прежде чем разрешить Promise. Это делает его подходящим для создания статического HTML полной страницы, включая данные, которые необходимо получить с помощью Suspense. Чтобы передавать содержимое по мере его загрузки, используйте API потокового серверного рендеринга (SSR), например renderToReadableStream.
Выполнение resumeAndPrerenderToNodeStream можно прервать, а затем продолжить с помощью другого вызова resumeAndPrerenderToNodeStream или возобновить с помощью resume для поддержки частичного пререндеринга.
Использование
Дополнительная литература
resumeAndPrerenderToNodeStream работает аналогично prerender, но позволяет продолжить ранее начатый и прерванный процесс пререндеринга. Дополнительные сведения о возобновлении пререндеренного дерева см. в документации по возобновлению.
© 2013–present Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream