🌐 KO

⚛️ SVG to React JSX 변환기

SVG 마크업을 붙여넣으면 React 컴포넌트에 바로 쓸 수 있는 JSX로 변환합니다. 속성을 camelCase로 바꾸고(class→className), style 문자열을 객체로 변환하며, 주석과 DOCTYPE를 제거합니다.

가이드

자세히 알아보기

01

1. 왜 SVG를 JSX로 바꿔야 하나

React(JSX)는 HTML/SVG와 문법이 조금 다릅니다. 하이픈이 들어간 속성(stroke-width)은 camelCase(strokeWidth)로, class는 className으로 써야 하고, style은 문자열이 아니라 자바스크립트 객체여야 합니다. 이 도구는 그런 차이를 자동으로 변환해, 디자이너가 내보낸 SVG 아이콘을 곧바로 React 컴포넌트에 붙여 넣을 수 있게 해 줍니다.

02

2. 변환 규칙

class→className, for→htmlFor로 매핑하고, stroke-width·fill-opacity 같은 하이픈 속성을 camelCase로 바꿉니다. xlink:href처럼 네임스페이스가 있는 속성은 xlinkHref로 변환하고, data-·aria- 속성은 그대로 둡니다. style="fill:red;stroke-linecap:round"는 style={{ fill: 'red', strokeLinecap: 'round' }} 객체로 변환하며, 주석·DOCTYPE·XML 선언은 제거합니다.

03

3. DOMParser 기반 안전한 변환

이 도구는 정규식이 아니라 브라우저의 DOMParser로 SVG를 실제 파싱한 뒤 재직렬화하므로, 중첩 구조와 속성을 정확히 다룹니다. 모든 처리는 브라우저 안에서만 이뤄지며 코드가 서버로 전송되지 않습니다. 변환 결과를 컴포넌트에 넣은 뒤에는 width/height를 props로 빼거나 fill="currentColor"로 바꾸는 등 필요에 맞게 다듬으세요.

자주 묻는 질문

변환 결과를 그대로 React에서 쓸 수 있나요?
네. 출력된 JSX를 컴포넌트의 return 안에 붙여 넣으면 됩니다. 필요하면 크기·색상을 props로 바꿔 재사용성을 높이세요.
style 문자열도 변환되나요?
네. style="a:b;c:d" 같은 문자열을 style={{ a: 'b', c: 'd' }} 형태의 객체로 변환하고, CSS 속성명을 camelCase로 바꿉니다.
입력한 SVG가 서버로 전송되나요?
아니요. 변환은 브라우저 안에서만 수행되며 코드는 서버로 전송되지 않습니다.
svgr 같은 라이브러리를 쓰나요?
아니요. 별도 라이브러리 없이 브라우저 내장 DOMParser로 직접 구현했습니다.