renderToNodeStream
Цей API буде видалено в наступному старшому релізі React. Замість нього використовуйте renderToPipeableStream.
renderToNodeStream рендерить дерево React у Читабельний потік Node.js.
const stream = renderToNodeStream(reactNode)
Довідник
renderToNodeStream(reactNode)
На сервері викличте renderToNodeStream, щоб отримати читабельний потік Node.js , який ви можете передати у відповідь.
import { renderToNodeStream } from 'react-dom/server';
const stream = renderToNodeStream(<App />);
stream.pipe(response);
На клієнтській стороні викликайте hydrateRoot, щоб зробити згенерований сервером HTML інтерактивним.
Дивіться більше прикладів нижче.
Параметри
reactNode: Вузол React, який ви хочете відрендерити в HTML. Наприклад, JSX-елемент типу<App />. .
опція
опції: Об'єкт для серверного рендерингу.- optional
identifierPrefix: Рядковий префікс, який React використовує для ідентифікаторів, згенерованихuseId. Корисно для уникнення конфліктів при використанні декількох коренів на одній сторінці. Має бути той самий префікс, що був переданий доhydrateRoot.
- optional
Повернення
Потік читання Node.js, який виводить HTML-рядок.
Застереження
Цей метод чекатиме на завершення всіх Меж підвішеного стану, перш ніж повертати будь-яке виведення.
Починаючи з React 18, цей метод буферизує все своє виведення, тому він фактично не надає жодних переваг для потокової обробки. Ось чому рекомендується перейти на
renderToPipeableStreamзамість нього.Повернутий потік - це байтовий потік у кодуванні utf-8. Якщо вам потрібен потік в іншому кодуванні, зверніть увагу на проект iconv-lite, який надає потоки transform для перекодування тексту.
Використання
Відображення React-дерева у вигляді HTML до потоку читання Node.js
Виклик renderToNodeStream для отримання потоку читання Node.js , який ви можете передати у відповідь на сервер:
import { renderToNodeStream } from 'react-dom/server';
// The route handler syntax depends on your backend framework
app.use('/', (request, response) => {
const stream = renderToNodeStream(<App />);
stream.pipe(response);
});
Потік створить початковий неінтерактивнн HTML-виведення ваших React-компонентів. На стороні клієнта вам потрібно буде викликати hydrateRoot, щоб гідратувати згенерований сервером HTML і зробити його інтерактивним.