HTML을 JSX로 변환(React)
HTML을 React용 JSX로 바꿉니다. className, htmlFor, style 객체, 카멜케이스 이벤트와 SVG 속성, 자기 닫기 빈 태그, 중괄호 이스케이프를 처리합니다.
인라인 핸들러를 화살표 함수로 바꿨습니다. 그 안에서 `this`는 더 이상 요소를 가리키지 않으니 event.currentTarget을 쓰세요. React 핸들러는 "return false"를 무시하므로 event.preventDefault()를 호출하세요.
HTML을 React 컴포넌트에 복사하면 첫 번째 class 속성에서 바로 깨집니다. JSX는 JavaScript이므로 class 대신 className, for 대신 htmlFor, 문자열 대신 style 객체, 카멜케이스 이벤트와 SVG 속성 이름, 모든 요소의 닫힘, 텍스트 속 중괄호 이스케이프가 필요합니다. 템플릿, 디자인 도구, 코드 조각 사이트의 HTML을 붙여 넣으면 올바른 JSX를 얻을 수 있고, 원하면 함수 컴포넌트로 감싸며, React에서 다르게 동작하는 부분은 비고로 알려 줍니다.
사용 방법
- HTML을 붙여 넣습니다. 조각이든 페이지 전체든 됩니다(<body>만 변환됩니다).
- 원하면 컴포넌트 이름을 입력해 export default function으로 감쌉니다.
- value/checked를 defaultValue/defaultChecked로 바꿀지, 인라인 핸들러를 화살표 함수로 바꿀지 고릅니다.
- JSX를 복사하고 비고를 확인합니다.
계산식
class → className · for → htmlFor · tabindex → tabIndex · style="a-b: c" → style={{ aB: "c" }} · onclick="f()" → onClick={(event) => { f() }} · <br> → <br />
속성은 React의 DOM 속성 이름을 따르며 data-*와 aria-*는 그대로 둡니다. <svg> 안에서는 하이픈 속성이 카멜케이스로 바뀌고(stroke-width → strokeWidth) 소문자 이름이 복원됩니다(viewbox → viewBox). JSX가 예약한 텍스트 문자는 이스케이프됩니다. { 와 }는 {'{'}와 {'}'}로, >는 >로 바뀝니다. 주석은 {/* */}가 됩니다. 최상위 노드가 여러 개면 <> 프래그먼트로 감쌉니다. 생략된 선택적 종료 태그(li, p, td…)는 추가됩니다.
예시
예제에서 class="card"는 className이 되고, style 문자열은 style={{ padding: "16px", borderRadius: "8px" }}가 되며, for="email"은 htmlFor, <input … value="" autofocus tabindex="1">은 <input … defaultValue="" autoFocus tabIndex="1" />이 됩니다. onclick="subscribe()"는 onClick={(event) => { subscribe() }}가 되고, "가입하기 {무료}"의 중괄호는 이스케이프되며, SVG 안의 viewbox와 stroke-width는 viewBox와 strokeWidth가 됩니다. 결과는 SignupCard 컴포넌트로 감싸지고, 주석은 {/* 가입 카드 */}로 프래그먼트 안에 남습니다.
자주 묻는 질문
value가 defaultValue로 바뀌는 이유는 무엇인가요?
React에서 value는 입력을 제어 컴포넌트로 만들어, onChange 핸들러가 없으면 사용자가 입력할 수 없습니다. defaultValue는 시작 값만 정하고 필드를 편집 가능하게 두므로 원래 HTML의 동작과 같습니다. 직접 상태와 onChange를 추가할 거라면 옵션을 해제하세요.
인라인 이벤트 핸들러를 그대로 써도 안전한가요?
코드가 들어 있는 화살표 함수가 되지만, this는 더 이상 요소를 가리키지 않고 return false로 이벤트가 취소되지도 않습니다. 보통은 로직을 컴포넌트 안의 이름 있는 함수로 옮기는 편이 낫습니다.
SVG 아이콘에도 쓸 수 있나요?
네. stroke-width, fill-rule, clip-path, xlink:href 같은 SVG 속성은 React 이름으로 바뀌고, viewbox 같은 소문자 이름도 바로잡습니다.
내 HTML이 업로드되나요?
아닙니다. 변환은 브라우저에서 이뤄집니다.
출처
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/html-to-jsx-tool/
인용·퍼가기
kakaoCalc. (2026, November 8). HTML을 JSX로 변환(React). https://kakao.mobile/ko/tools/html-to-jsx-tool/
“HTML을 JSX로 변환(React).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/html-to-jsx-tool/.