renderToNodeStream
renderToNodeStream γ―γReact οΏ½?γγͺγΌγ Node.js οΏ½? Readable γΉγγͺγΌγ γ«γ¬γ³γγΌγγΎγγ
const stream = renderToNodeStream(reactNode)γͺγγ‘γ¬γ³γΉ
renderToNodeStream(reactNode)
γ΅γΌγδΈγ«γγγ¦γrenderToNodeStream γεΌγ³εΊγγ¦γγ¬γΉγγ³γΉγ«γγ€γγγγγ¨γγ§γγ Node.js οΏ½? Readable γΉγγͺγΌγ γεεΎγγΎγγ
import { renderToNodeStream } from 'react-dom/server';
const stream = renderToNodeStream(<App />);
stream.pipe(response);γ―γ©γ€γ’γ³γε΄γ§γ―γγοΏ½?γγγ«γ΅γΌγηζγγγ HTML γζδ½ε―θ½γ«γγγγγ« hydrateRoot γη¨γγΎγγ
εΌζ°
reactNode: HTML γ«γ¬γ³γγΌγγγ React γγΌγγδΎγγ°γ<App />οΏ½?γγγͺ JSX θ¦η΄ γ
θΏγε€
HTML ζεεγεΊεγγ Node.js οΏ½? Readable γΉγγͺγΌγ γ
注ζηΉ
-
γοΏ½?γ‘γ½γγγ―γγγΉγ¦οΏ½?γ΅γΉγγ³γΉγγ¦γ³γγͺγοΏ½?οΏ½δΊγγγΎγ§γεΊεγθΏγγεΎ ζ©γγΎγγ
-
React 18 ζηΉγ«γγγ¦γγοΏ½?γ‘γ½γγγ―γγΉγ¦οΏ½?εΊεγγγγγ‘γͺγ³γ°γγγγγοΏ½?οΏ½ιγ«γ―γΉγγͺγΌγ γδ½Ώη¨γγε©ηΉγεΎγγγΎγγγγγγγ代γγγ«
renderToPipeableStreamγ«η§»θ‘γγγγ¨γζ¨ε₯¨γγγηη±γ§γγ -
θΏγγγγΉγγͺγΌγ γ―γutf-8 γ§γ¨γ³γ³γΌγγγγγγ€γγΉγγͺγΌγ γ§γγε₯οΏ½?γ¨γ³γ³γΌγγ£γ³γ°οΏ½?γΉγγͺγΌγ γεΏ θ¦γͺε ΄εγ―γγγγΉγοΏ½?γγ©γ³γΉγ³γΌγγ£γ³γ°η¨οΏ½?ε€ζγΉγγͺγΌγ γζδΎγγ iconv-lite οΏ½?γγγͺγγγΈγ§γ―γγεη §γγ¦γγ γγγ
δ½Ώη¨ζ³
React γγͺγΌγ HTML γ¨γγ¦ Node.js οΏ½? Readable γΉγγͺγΌγ γ«γ¬γ³γγΌγγ
renderToNodeStream γεΌγ³εΊγγ¦γγ΅γΌγγγοΏ½?γ¬γΉγγ³γΉγ«γγ€γγ§γγ Node.js οΏ½? Readable γΉγγͺγΌγ γεεΎγγΎγγ
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);
});γοΏ½?γΉγγͺγΌγ γ―γReact γ³γ³γγΌγγ³γοΏ½?ιγ€γ³γΏγ©γ―γγ£γγͺεζ HTML εΊεγηζγγΎγγγ―γ©γ€γ’γ³γε΄γ§γ―γγ΅γΌγγηζγγ HTML οΏ½?γγ€γγ¬γΌγ·γ§γ³γθ‘γζδ½ε―θ½γ«γγγγγ«γhydrateRoot γεΌγ³εΊγεΏ
θ¦γγγγΎγγ