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