🏷️ 관련 기술 태그:#SVG2JSX#ReactComponent#TypeScript_SVG#TailwindIcons#Lucide
📖

SVG → React (JSX/TSX) 컴포넌트 변환기 완벽 가이드

모던 프론트엔드 개발(React, Next.js, Vue, React Native 등)에서 웹사이트와 모바일 앱의 스케일러블 아이콘 시스템 및 그래픽 리소스를 관리할 때 SVG(Scalable Vector Graphics) 포맷은 표준으로 사용됩니다. 피그마(Figma), 일러스트레이터(Adobe Illustrator) 등 디자인 툴에서 추출된 순수 XML 기반 SVG 코드는 웹 표준 HTML 속성(예: `stroke-width`, `fill-rule`, `clip-path`, `class`)을 사용하지만, React/JSX 가상 DOM 환경에서는 자바스크립트 객체 명명 규칙에 맞춰 모든 속성이 `strokeWidth`, `fillRule`, `clipPath`, `className`과 같은 카멜케이스(camelCase)로 작성되어야 합니다. 만약 피그마에서 복사한 XML SVG 코드를 React 컴포넌트에 그대로 붙여넣는다면, 브라우저 개발자 도구 콘솔에 수많은 `Invalid DOM property` 경고가 발생하며, 경우에 따라 SVG 렌더링 자체가 깨지는 버그를 초래하게 됩니다. JuicyDevs SVG to React 변환기는 이러한 속성 매핑과 컴포넌트 래핑 과정을 원클릭으로 해결해 줍니다. XML 형태의 SVG 코드를 파싱하여 모든 속성을 React JSX 표준 카멜케이스로 자동 변환하고, TypeScript 환경을 지원하는 `SVGProps<SVGSVGElement>` 인터페이스, Tailwind CSS 통합을 위한 하드코딩 크기 제거, 그리고 React `forwardRef` 및 커스텀 컴포넌트 이름 지정 구조까지 완벽한 TSX/JSX 아이콘 컴포넌트 코드로 생성해 줍니다.

주요 핵심 기능

  • SVG 속성을 React 표준 camelCase로 자동 변환 (stroke-width → strokeWidth 등)
  • TypeScript용 SVGProps<SVGSVGElement> 인터페이스 및 props 전달 구조 자동 생성
  • Tailwind CSS 클래스(w-6 h-6 등)로 크기를 조절할 수 있도록 고정 크기 옵션 제거 지원
  • React forwardRef 및 커스텀 컴포넌트 이름 지정 옵션 지원

🚀 빠른 사용 방법

  1. 1좌측 입력창에 피그마나 일러스트레이터에서 복사한 <svg> 코드를 붙여넣습니다.
  2. 2TypeScript 사용 여부 및 forwardRef 옵션을 설정합니다.
  3. 3우측에 생성된 React 컴포넌트 코드를 복사하여 아이콘 컴포넌트로 활용합니다.
🔒100% 클라이언트 사이드 보안 아키텍처

XML 파서를 통해 모든 SVG 노드를 순회하며 React DOM에서 요구하는 프로퍼티 명명 규칙으로 변환합니다.

💡실무 기술 가이드 & 자주 묻는 질문 (FAQ)

3 개 질문 & 답변 가이드

Q1.Figma에서 복사한 SVG 코드를 바로 붙여넣어 쓸 수 있나요?

네, 완전히 지원됩니다. 피그마에서 아이콘 레이어를 우클릭한 후 "Copy as SVG"를 선택하여 복사한 코드를 본 도구에 붙여넣으시면 즉시 오류 없이 작동하는 React 컴포넌트로 변환됩니다.

Q2.Tailwind CSS로 아이콘 크기와 색상을 조절하려면 어떻게 하나요?

변환 시 "고정 크기(width/height) 제거" 옵션을 활성화하시면 SVG 자체의 `width="24"` 속성이 제거됩니다. 이후 생성된 React 컴포넌트에 `<Icon className="w-6 h-6 text-indigo-500 hover:text-indigo-600" />`과 같이 Tailwind 유틸리티 클래스를 적용하여 유연하게 크기와 색상을 조절하실 수 있습니다.

Q3.TypeScript 사용 프로젝트에서도 별도 타입 선언이 필요한가요?

아니요, 필요하지 않습니다. 기본으로 생성되는 변환 코드가 React의 `SVGProps<SVGSVGElement>` 인터페이스를 상속하여 작성되므로, 추가 타입 선언 없이 프로젝트에 즉시 복사하여 타입 안전하게 사용하실 수 있습니다.