{
  "url": "https://unifast.dev/ko/docs/packages/react/overview/",
  "locale": "ko",
  "title": "@unifast/react",
  "description": "unifast HAST 출력을 컴포넌트 매핑과 함께 React 엘리먼트로 변환",
  "section": "packages",
  "body": "## 개요\n\n`@unifast/react`는 unifast의 HAST(HTML Abstract Syntax Tree) 출력을 React 엘리먼트로 변환합니다. 두 가지 주요 함수를 제공합니다.\n\n- [`compileToReact()`](/docs/packages/react/compile-to-react) - 고수준: Markdown/MDX를 컴파일하고 React 엘리먼트를 바로 반환합니다.\n- [`hastToReact()`](/docs/packages/react/hast-to-react) - 저수준: HAST 트리를 React 엘리먼트로 변환합니다.\n\n이 패키지는 HTML에서 React로의 속성 이름 변환(`class`에서 `className`, `for`에서 `htmlFor` 등)과 CSS 스타일 문자열 파싱을 자동으로 처리합니다.\n\n## 설치\n\npeer 의존성: `compileToReact`를 사용하려면 `@unifast/node`가 필요합니다.\n\n## 타입 정의\n\n### CompileToReactOptions\n\nReact 관련 필드가 추가된 `CompileOptions` 확장 타입.\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `createElement` | `CreateElement` | React의 `createElement` 함수 |\n| `Fragment` | `unknown` | React의 `Fragment` 컴포넌트 |\n| `components?` | `ComponentMap` | HTML 태그 이름과 React 컴포넌트의 매핑 |\n| *(모든 CompileOptions)* | - | `CompileOptions`에서 상속 |\n\n### CompileToReactResult\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `element` | `unknown` | 루트 React 엘리먼트 |\n| `frontmatter` | `Record<string, unknown>` | 파싱된 frontmatter 메타데이터 |\n| `diagnostics` | `Diagnostic[]` | 경고와 오류 |\n| `stats` | `{ parseMs, transformMs, emitMs }` | 단계별 소요 시간(ms) |\n| `toc` | `TocEntry[]` | 추출된 목차 |\n\n### HastToReactOptions\n\n| 속성 | 타입 | 설명 |\n|----------|------|-------------|\n| `createElement` | `CreateElement` | React의 `createElement` 함수 |\n| `Fragment` | `unknown` | React의 `Fragment` 컴포넌트 |\n| `components?` | `ComponentMap` | HTML 태그 이름과 커스텀 React 컴포넌트의 매핑 |\n\n### CreateElement\n\n```ts\ntype CreateElement = (type: any, props: any, ...children: any[]) => any;\n```\n\n### ComponentMap\n\n```ts\ntype ComponentMap = Record<string, unknown>;\n```\n\n### 속성 변환\n\n| HTML 속성 | React prop |\n|---------------|------------|\n| `class` | `className` |\n| `for` | `htmlFor` |\n| `accesskey` | `accessKey` |\n| `autocomplete` | `autoComplete` |\n| `autofocus` | `autoFocus` |\n| `autoplay` | `autoPlay` |\n| `charset` | `charSet` |\n| `colspan` | `colSpan` |\n| `contenteditable` | `contentEditable` |\n| `crossorigin` | `crossOrigin` |\n| `datetime` | `dateTime` |\n| `enctype` | `encType` |\n| `formaction` | `formAction` |\n| `hreflang` | `hrefLang` |\n| `httpequiv` | `httpEquiv` |\n| `inputmode` | `inputMode` |\n| `maxlength` | `maxLength` |\n| `minlength` | `minLength` |\n| `novalidate` | `noValidate` |\n| `readonly` | `readOnly` |\n| `referrerpolicy` | `referrerPolicy` |\n| `rowspan` | `rowSpan` |\n| `spellcheck` | `spellCheck` |\n| `srcdoc` | `srcDoc` |\n| `srclang` | `srcLang` |\n| `srcset` | `srcSet` |\n| `tabindex` | `tabIndex` |\n| `usemap` | `useMap` |\n\nCSS `style` 문자열은 React 스타일 객체로 자동 변환됩니다(예: `\"font-size: 16px\"`는 `{ fontSize: \"16px\" }`가 됩니다).\n\n## Exports 요약\n\n| Export | 종류 | 설명 |\n|--------|------|-------------|\n| `compileToReact` | function | Markdown/MDX를 React 엘리먼트로 컴파일 |\n| `hastToReact` | function | HAST를 React 엘리먼트로 변환 |\n| `CompileToReactOptions` | type | `compileToReact` 옵션 |\n| `CompileToReactResult` | type | `compileToReact` 결과 |\n| `HastToReactOptions` | type | `hastToReact` 옵션 |\n| `CreateElement` | type | React createElement 시그니처 |\n| `ComponentMap` | type | HTML 태그-컴포넌트 매핑 |",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/docs/packages/react/overview.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/ja/docs/packages/react/overview.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/zh-CN/docs/packages/react/overview.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/zh-TW/docs/packages/react/overview.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/ko/docs/packages/react/overview.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/fr/docs/packages/react/overview.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/it/docs/packages/react/overview.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/es/docs/packages/react/overview.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/pt-BR/docs/packages/react/overview.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/de/docs/packages/react/overview.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/ru/docs/packages/react/overview.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/hi/docs/packages/react/overview.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/id/docs/packages/react/overview.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/tr/docs/packages/react/overview.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/packages/react/overview/",
      "api": "https://unifast.dev//api/vi/docs/packages/react/overview.json"
    }
  ]
}
