resume¶
resume передаёт предварительно отрендеренное дерево React в читаемый веб-поток.
1 | |
Примечание
Этот API зависит от Web Streams. Для Node.js используйте resumeToNodeStream.
Описание¶
resume(node, postponedState, options?)¶
Вызовите resume, чтобы возобновить рендеринг предварительно отрендеренного дерева React в HTML в читаемый веб-поток.
1 2 3 4 5 6 7 8 | |
Параметры¶
reactNode: Узел React, с которым вы вызывалиprerender. Например, JSX-элемент<App />. Ожидается, что он представляет весь документ, поэтому компонентAppдолжен вывести тег<html>.postponedState: Непрозрачный объектpostpone, возвращённый API пререндера и загруженный оттуда, где вы его сохранили (например, redis, файл или S3).- опционально
options: Объект с опциями потоковой передачи.- опционально
nonce: Строкаnonce, разрешающая скрипты дляscript-srcContent-Security-Policy. - опционально
signal: Сигнал прерывания, который позволяет прервать серверный рендеринг и дорендерить остальное на клиенте. - опционально
onBrowserBailout: Обратный вызов, который React вызывает, когда восстанавливается послеbrowser(), оставляя фолбэк Suspense, который браузер заменит. Он получаетError, описывающий рендеринг только в браузере, и объектerrorInfo, содержащийcomponentStack. Если вbrowserбыла передана причина, она доступна какerror.cause. По умолчанию React ничего не делает. Как сообщать о рендеринге только в браузере. - опционально
onError: Обратный вызов, который срабатывает при любой серверной ошибке, восстановимой или нет. По умолчанию он только вызываетconsole.error. Если вы переопределяете его, чтобы записывать отчёты о сбоях, всё равно вызывайтеconsole.error.
- опционально
Возвращаемое значение¶
resume возвращает промис:
- Если
resumeуспешно создал оболочку, промис разрешится в читаемый веб-поток, который можно направить в записываемый веб-поток. - Если в оболочке произойдёт ошибка, промис будет отклонён с этой ошибкой.
У возвращённого потока есть дополнительное свойство:
allReady: Промис, который разрешается, когда весь рендеринг завершён. Можно выполнитьawait stream.allReadyперед возвратом ответа для краулеров и статической генерации. Если сделать так, прогрессивной загрузки не будет. Поток будет содержать окончательный HTML.
Предупреждения¶
resumeне принимает опцииbootstrapScripts,bootstrapScriptContentиbootstrapModules. Эти опции нужно передать в вызовprerender, который создаётpostponedState. Содержимое бутстрапа также можно вручную вставить в записываемый поток.resumeне принимаетidentifierPrefix, потому что префикс должен совпадать вprerenderиresume.- Поскольку
nonceнельзя передать в пререндер, передавайтеnonceвresume, только если вы не передаёте скрипты в пререндер. resumeзаново рендерит дерево от корня, пока не найдёт компонент, который не был полностью предварительно отрендерен. Полностью пререндеренные компоненты (сам компонент и его дочерние элементы закончили пререндер) пропускаются целиком.
Использование¶
Возобновление пререндера¶
1 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
Дополнительно¶
Возобновление ведёт себя как renderToReadableStream. Больше примеров — в разделе использования renderToReadableStream. Раздел использования prerender содержит примеры того, как использовать именно prerender.
Источник — https://react.dev/reference/react-dom/server/resume