resumeAndPrerenderToNodeStream¶
resumeAndPrerenderToNodeStream продолжает предварительно отрендеренное дерево React в строку статического HTML с помощью Node.js Stream..
1 | |
Примечание
Этот API специфичен для Node.js. Окружения с Web Streams, такие как Deno и современные граничные среды исполнения, должны использовать prerender.
Описание¶
resumeAndPrerenderToNodeStream(reactNode, postponedState, options?)¶
Вызовите resumeAndPrerenderToNodeStream, чтобы продолжить предварительно отрендеренное дерево React в строку статического HTML.
1 2 3 4 5 6 7 8 | |
На клиенте вызовите hydrateRoot, чтобы сделать сгенерированный сервером HTML интерактивным.
Параметры¶
reactNode: Узел React, с которым вы вызывалиprerender(или предыдущийresumeAndPrerenderToNodeStream). Например, JSX-элемент<App />. Ожидается, что он представляет весь документ, поэтому компонентAppдолжен вывести тег<html>.postponedState: Непрозрачный объектpostpone, возвращённый API пререндера и загруженный оттуда, где вы его сохранили (например, redis, файл или S3).- опционально
options: Объект с опциями потоковой передачи.- опционально
signal: Сигнал прерывания, который позволяет прервать серверный рендеринг и дорендерить остальное на клиенте. - опционально
onBrowserBailout: Обратный вызов, который React вызывает, когда восстанавливается послеbrowser(), оставляя фолбэк Suspense, который браузер заменит. Он получаетError, описывающий рендеринг только в браузере, и объектerrorInfo, содержащийcomponentStack. Если вbrowserбыла передана причина, она доступна какerror.cause. По умолчанию React ничего не делает. Как сообщать о рендеринге только в браузере. - опционально
onError: Обратный вызов, который срабатывает при любой серверной ошибке, восстановимой или нет. По умолчанию он только вызываетconsole.error. Если вы переопределяете его, чтобы записывать отчёты о сбоях, всё равно вызывайтеconsole.error.
- опционально
Возвращаемое значение¶
resumeAndPrerenderToNodeStream возвращает промис:
- Если рендеринг прошёл успешно, промис разрешится в объект, содержащий:
prelude: веб-поток HTML. Этот поток можно использовать, чтобы отправлять ответ частями, или прочитать весь поток в строку.postponed: непрозрачный объект, сериализуемый в JSON, который можно передать вresumeToNodeStreamилиresumeAndPrerenderToNodeStream, еслиresumeAndPrerenderToNodeStreamпрерван.
- Если рендеринг не удался, промис будет отклонён. Используйте это, чтобы вывести резервную оболочку.
Предупреждения¶
nonce недоступен при пререндере. Nonce должен быть уникальным для каждого запроса, и если вы защищаете приложение с помощью CSP, включать значение nonce в сам пререндер было бы неуместно и небезопасно.
Когда использовать resumeAndPrerenderToNodeStream?
Статический API resumeAndPrerenderToNodeStream используется для статической генерации на сервере (SSG). В отличие от renderToString, resumeAndPrerenderToNodeStream ждёт загрузки всех данных, прежде чем разрешиться. Поэтому он подходит для генерации статического HTML целой страницы, включая данные, которые нужно получить с помощью Suspense. Чтобы передавать содержимое потоком по мере загрузки, используйте потоковый API серверного рендеринга (SSR), например renderToReadableStream.
resumeAndPrerenderToNodeStream можно прервать и позже либо продолжить ещё одним resumeAndPrerenderToNodeStream, либо возобновить с помощью resume, чтобы поддержать частичный пререндер.
Использование¶
Дополнительно¶
resumeAndPrerenderToNodeStream ведёт себя похоже на prerender, но им можно продолжить ранее начатый и прерванный пререндер. Подробнее о возобновлении предварительно отрендеренного дерева см. документацию resume.
Источник — https://react.dev/reference/react-dom/static/resumeAndPrerenderToNodeStream