resumeAndPrerender¶
resumeAndPrerender продолжает предварительно отрендеренное дерево React в строку статического HTML с помощью Web Stream.
1 | |
Примечание
Этот API зависит от Web Streams. Для Node.js используйте resumeAndPrerenderToNodeStream.
Описание¶
resumeAndPrerender(reactNode, postponedState, options?)¶
Вызовите resumeAndPrerender, чтобы продолжить предварительно отрендеренное дерево React в строку статического HTML.
1 2 3 4 5 6 7 8 9 10 11 12 | |
На клиенте вызовите hydrateRoot, чтобы сделать сгенерированный сервером HTML интерактивным.
Параметры¶
reactNode: Узел React, с которым вы вызывалиprerender(или предыдущийresumeAndPrerender). Например, 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.
- опционально
Возвращаемое значение¶
prerender возвращает промис:
- Если рендеринг прошёл успешно, промис разрешится в объект, содержащий:
prelude: веб-поток HTML. Этот поток можно использовать, чтобы отправлять ответ частями, или прочитать весь поток в строку.postponed: непрозрачный объект, сериализуемый в JSON, который можно передать вresumeилиresumeAndPrerender, еслиprerenderпрерван.
- Если рендеринг не удался, промис будет отклонён. Используйте это, чтобы вывести резервную оболочку.
Предупреждения¶
nonce недоступен при пререндере. Nonce должен быть уникальным для каждого запроса, и если вы защищаете приложение с помощью CSP, включать значение nonce в сам пререндер было бы неуместно и небезопасно.
Когда использовать resumeAndPrerender?
Статический API resumeAndPrerender используется для статической генерации на сервере (SSG). В отличие от renderToString, resumeAndPrerender ждёт загрузки всех данных, прежде чем разрешиться. Поэтому он подходит для генерации статического HTML целой страницы, включая данные, которые нужно получить с помощью Suspense. Чтобы передавать содержимое потоком по мере загрузки, используйте потоковый API серверного рендеринга (SSR), например renderToReadableStream.
resumeAndPrerender можно прервать и позже либо продолжить ещё одним resumeAndPrerender, либо возобновить с помощью resume, чтобы поддержать частичный пререндер.
Использование¶
Дополнительно¶
resumeAndPrerender ведёт себя похоже на prerender, но им можно продолжить ранее начатый и прерванный пререндер. Подробнее о возобновлении предварительно отрендеренного дерева см. документацию resume.
Источник — https://react.dev/reference/react-dom/static/resumeAndPrerender