TODO: 공식문서 이해하기
리액트 컴포넌트
를 렌더링해 HTML 문자열
로 반환하는 함수// renderToString을 활용해 리액트 컴포넌트를 HTML 문자열로 만들어낸 모습
import ReactDOMServer from "react-dom/server";
function ChildrenComponent({ fruits }: { fruits: Array<string> }) {
useEffect(() => {
console.log(fruits);
}, [fruits]);
function handleClick() {
console.log("hello");
}
return (
<ul>
{fruits.map((fruit) => (
<li key={fruit} onClick={handleClick}>
{fruit}
</li>;
))}
</ul>
);
}
function SampleComponent() {
return (
<>
<div>hello</div>
<ChildrenComponent fruits={["apple", "banana", "peach"]} />
</>
);
}
const result = ReactDOMServer.renderToString(
React.createElement("div", { id: "root" }, <SampleComponent />)
);
위 result는 다음과 같은 문자열을 반환함
<div id="root" data-reactroot="">
<div>hello</div>
<ul>
<li>apple</li>
<li>banana</li>
<li>peach</li>
</ul>
</div>
훅
과 이벤트 핸들러
는 결과물에 포함되지 않았음div#root
에 존재하는 속성인 data-reactroot
hydrate
함수에서 루트를 식별하는 기준점이 됨renderToString
과 매우 유사한 함수
data-reactroot
와 같은 리액트에서만 사용하는 추가적인 DOM 속성을 만들지 않는다는 점