일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- background: url
- Javascript
- react hook
- context
- React 고급 안내서
- React API 참고서
- RTK Query
- React 18
- notFound()
- react-helmet
- React 18 Nextjs
- Babel
- hook
- background setttimeout
- background setInterval
- React18
- Nextjs
- getUTCDate
- 고급안내서
- CSS
- Programmers
- Render Props
- Nextjs React 18
- react
- React 고급안내서
- background tab
- React 공식문서
- next13 head
- Next13
- codingtest
Archives
- Today
- Total
akjfal
ReactDOMServer 본문
ReactDOMServer객체를 통해 컴포넌트를 정적 마크업으로 렌더링 할 수 있습니다.
Reference
renderToPipeableStream()
ReactDOMServer.renderToPipeableStream(element, options)
초기 html을 렌더링합니다. 인라인 <script>를 통해 팝인하는 지연된 콘텐츠 블록으로 HTML의 서스펜스 및 스트리밍을 완벽하게 지원합니다. hydrateRoot를 호출하게 되면 React는 이벤트 핸들러만 연결하며 빠른 로드가 된다.
let didError = false;
const stream = renderToPipeableStream(
<App />,
{
onShellyReady(){
// 에러발생시 처리를 이곳에서 한다.
res.statusCode = didError ? 500 : 200;
res.setHeader('Contesxt-type', 'text/html');
stream.pipe(res);
}.
onShellError(error){
// 에러발생시 대체페이지
res.statusCode = 500;
res.send('<!doctype html><p>Loading...</p>');
},
onAllReady(){
// steaming을 원하지 않는다면 onShellReady대신 사용하세요
// 전체페이지를 쏩니다.
// res.statusCode = didError ? 500 : 200;
// res.setHeader('Content-type', 'text/html');
// stream.pipe(res);
},
onError(err){
didError = true;
console.error(error);
},
}
};
renderToReadableStream()
ReactDOMServer.renderToReadableStream(element, options);
초기 HTML을 보낸다. 그리고 ReadableStream을 Promise로 반환합니다. HTML의 suspense와 streaming을 지원합니다.
ReactDOM.hydrateRoot를 호출한다면 React는 이를 보존하고 이벤트 핸들러만 연결하여 빠른 로드를 합니다.
let controller =- new AbortController();
let didError = false;
try {
let stream = await renderToReadableStream(
<html>
<body>Success</body>
</html>,
{
signal: controller.signal,
onError(error){
didError = true;
console.error(error);
}
}
);
return new Response(stream, {
status: didError ? 500 : 200m
headers: {'Content-Type': 'text/html'},
});
} catch(error){
return new Response(
'<!doctype html><p>Loading...</p><script src="clientrender.js"></script>',
{
status: 500,
headers: {'Content-Type': 'text/html'}
});
);
renderToStaticNodeStream()
ReactDOMServer.renderToStaticNodeStream(element)
data-reactroot와 같이 React에서 내부적으로 사용하는 추가적인 DOM attribute를 만들지 않습니다. 여분의 attribute를 제거해서 약간의 바이트를 절약할 수 있어, React를 간단한 정적 페이지 생성기로 사용하고 싶은 경우에 유용합니다.
renderToString()
ReactDOMServer.renderToString(element)
React라 렌더링한 element들을 string으로 변환합니다. 이를 SEO 향상에 사용할 수 잇습니다.
renderToStaticMarkup()
ReactDOMServer.renderToStaticMarkup(element)
renderToString과 비슷하지만 리엑트에서 사용하는 추가적인 DOM속성들을 만들지 않습니다.
'(구)React 공식문서 > API 참고서' 카테고리의 다른 글
합성 이벤트(SyntheticEvent) (0) | 2023.03.05 |
---|---|
DOM 엘리먼트 (0) | 2023.03.05 |
ReactDOMClient (0) | 2023.03.05 |
ReactDOM (0) | 2023.03.05 |
React 최상위 API (0) | 2023.03.05 |
Comments