resumeToPipeableStream¶
resumeToPipeableStream передаёт предварительно отрендеренное дерево React в передаваемый Node.js Stream.
1 | |
Примечание
Этот API специфичен для Node.js. Окружения с Web Streams, такие как Deno и современные граничные среды исполнения, должны использовать resume.
Описание¶
resumeToPipeableStream(node, postponed, options?)¶
Вызовите resumeToPipeableStream, чтобы возобновить рендеринг предварительно отрендеренного дерева React в HTML в Node.js Stream.
1 2 3 4 5 6 7 8 9 10 11 | |
Параметры¶
reactNode: Узел React, с которым вы вызывалиprerender. Например, JSX-элемент<App />. Ожидается, что он представляет весь документ, поэтому компонентAppдолжен вывести тег<html>.postponedState: Непрозрачный объектpostpone, возвращённый API пререндера и загруженный оттуда, где вы его сохранили (например, redis, файл или S3).- опционально
options: Объект с опциями потоковой передачи.- опционально
nonce: Строкаnonce, разрешающая скрипты дляscript-srcContent-Security-Policy. - опционально
onAllReady: Обратный вызов, который срабатывает, когда весь рендеринг завершён, включая оболочку и всё дополнительное содержимое. Здесь можно вызватьpipeвместоonShellReadyдля краулеров и статической генерации. Поток будет содержать окончательный HTML. - опционально
onBrowserBailout: Обратный вызов, который React вызывает, когда восстанавливается послеbrowser(), оставляя фолбэк Suspense, который браузер заменит. Он получаетError, описывающий рендеринг только в браузере, и объектerrorInfo, содержащийcomponentStack. Если вbrowserбыла передана причина, она доступна какerror.cause. По умолчанию React ничего не делает. Как сообщать о рендеринге только в браузере. - опционально
onError: Обратный вызов, который срабатывает при любой серверной ошибке, восстановимой или нет. По умолчанию он только вызываетconsole.error. Если вы переопределяете его, чтобы записывать отчёты о сбоях, всё равно вызывайтеconsole.error. - опционально
onShellReady: Обратный вызов, который срабатывает сразу после завершения оболочки. Здесь можно вызватьpipe, чтобы начать потоковую передачу. React будет передавать дополнительное содержимое потоком после оболочки вместе с инлайн-тегами<script>, которые заменяют HTML-фолбэки загрузки содержимым. - опционально
onShellError: Обратный вызов, который срабатывает, если при рендеринге оболочки произошла ошибка. Он получает ошибку аргументом. Из потока ещё не было отдано ни одного байта, и ниonShellReady, ниonAllReadyне будут вызваны, поэтому можно вывести резервную HTML-оболочку или использовать prelude.
- опционально
Возвращаемое значение¶
resumeToPipeableStream возвращает объект с двумя методами:
pipeвыводит HTML в переданный записываемый поток Node.js. ВызовитеpipeвonShellReady, если хотите включить потоковую передачу, или вonAllReadyдля краулеров и статической генерации.abortпозволяет прервать серверный рендеринг и дорендерить остальное на клиенте.
Предупреждения¶
resumeToPipeableStreamне принимает опцииbootstrapScripts,bootstrapScriptContentиbootstrapModules. Эти опции нужно передать в вызовprerender, который создаётpostponedState. Содержимое бутстрапа также можно вручную вставить в записываемый поток.resumeToPipeableStreamне принимаетidentifierPrefix, потому что префикс должен совпадать вprerenderиresumeToPipeableStream.- Поскольку
nonceнельзя передать в пререндер, передавайтеnonceвresumeToPipeableStream, только если вы не передаёте скрипты в пререндер. resumeToPipeableStreamзаново рендерит дерево от корня, пока не найдёт компонент, который не был полностью предварительно отрендерен. Полностью пререндеренные компоненты (сам компонент и его дочерние элементы закончили пререндер) пропускаются целиком.
Использование¶
Дополнительно¶
Возобновление ведёт себя как renderToReadableStream. Больше примеров — в разделе использования renderToReadableStream. Раздел использования prerender содержит примеры того, как использовать именно prerenderToNodeStream.
Источник — https://react.dev/reference/react-dom/server/resumeToPipeableStream