UTILS.
100% 브라우저 내 실행
🎨

SVG를 JSX 컴포넌트로 변환

원시 SVG 마크업을 바로 사용할 수 있는 React 컴포넌트로 바꿉니다. camelCase 속성, prop 스프레드, 선택적 currentColor와 forwardRef를 지원합니다.

— 여기에 결과가 표시됩니다 —

이 도구에 대하여

SVG를 JSX 컴포넌트로 변환 도구는 원시 SVG 마크업을 깔끔한 React 컴포넌트로 변환합니다. SVGR이 하는 방식과 같지만 완전히 브라우저에서 이루어지며 아무것도 업로드되지 않습니다. 디자인 도구에서 익스포트한 아이콘을 붙여넣으면 import하여 스타일링할 수 있는 컴포넌트를 얻습니다. DOMParser로 SVG를 파싱하고 마크업이 잘못되면 명확한 오류를 보고합니다.

하이픈이 있거나 네임스페이스가 있는 모든 SVG 속성은 React 이름으로 camelCase 됩니다. stroke-width는 strokeWidth, fill-rule은 fillRule, clip-path는 clipPath, stop-color는 stopColor, xlink:href는 xlinkHref, xmlns:xlink는 xmlnsXlink가 되며 data-*와 aria-* 속성은 그대로 둡니다. 인라인 style 문자열은 style 객체가 되고, path와 circle 같은 빈 요소는 자체 닫히며, props가 루트 <svg {...props}>에 스프레드되어 컴포넌트가 구성 가능한 상태로 유지됩니다. 선택 토글로 하드코딩된 fill과 stroke 값을 currentColor로 바꾸고(아이콘이 텍스트 색을 상속하도록), width와 height를 제거하여 컨테이너에 맞게 크기가 조정되게 하고, 컴포넌트를 forwardRef로 감싸 기본 <svg> 노드를 노출할 수 있습니다.

JavaScript 또는 TypeScript 출력을 선택하세요. TypeScript 변형은 props를 React.SVGProps<SVGSVGElement>로 타이핑하며, forwardRef를 켜면 forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>를 사용합니다. 컴포넌트는 선택한 이름과 들여쓰기로 export된 화살표 함수(export const Icon = (props) => (...))로 출력되어 아이콘 모듈에 붙여넣을 준비가 됩니다.

자주 묻는 질문

SVG 속성은 어떻게 변환되나요?
하이픈과 콜론 네임스페이스가 있는 속성은 React 등가물로 camelCase 됩니다. stroke-width는 strokeWidth, fill-rule은 fillRule, xlink:href는 xlinkHref가 됩니다. data-*와 aria-* 속성은 보존됩니다. 인라인 스타일은 style 객체가 됩니다.
currentColor 옵션은 무엇을 하나요?
하드코딩된 fill과 stroke 색상 값(none 이외의 것)을 "currentColor"로 바꿔, SVG가 주변 텍스트 색을 상속하고 부모의 순수 CSS color로 다시 색칠될 수 있게 합니다.
왜 props를 svg에 스프레드하나요?
{...props}를 루트 <svg>에 스프레드하면 호출자가 className, width, onClick, aria 레이블 및 기타 SVG props를 컴포넌트에 전달할 수 있습니다. forwardRef를 켜면 ref도 기본 요소로 전달됩니다.
JS 출력과 TS 출력의 차이는 무엇인가요?
TypeScript 출력은 props를 React.SVGProps<SVGSVGElement>로 타이핑하고, forwardRef가 있으면 forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>를 사용합니다. JavaScript 출력은 타입 주석을 생략하지만 그 외에는 동일합니다.

더 많은 도구