Spec-Zone.ru › React

resumeAndPrerenderToNodeStream

resumeAndPrerenderToNodeStream продолжает пререндеренное дерево React до статической HTML-строки с помощью потока Node.js..

const {prelude, postponed} = await resumeAndPrerenderToNodeStream(reactNode, postponedState, options?)
  • Справочник
    • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API