import { isValidElement, ReactNode } from 'react'; // NOTE: 실제 SSR은 react-dom/server.renderToString을 사용합니다. // 여기서는 같은 개념의 미니 버전을 직접 구현합니다. export function renderToString(node: ReactNode): string { // TODO: null, undefined, boolean -> '' // TODO: string, number -> String(node) // TODO: Array -> 각 항목을 재귀 직렬화 후 join('') // TODO: React 엘리먼트 (isValidElement): // - typeof element.type === 'function' 이면 element.type(element.props) 호출 후 재귀 // - typeof element.type === 'string' 이면 <tag [class="..."]>children</tag> // - props.className이 있으면 class="..." 속성 추가 // - props.children을 재귀 직렬화 return ''; }
Tests