HTML을 JSX로
SVG 아이콘 코드도 그대로 넣으면 stroke-width → strokeWidth처럼 리액트 이름으로 바꿔 줘요.
입력한 내용은 서버로 보내지 않고 이 기기에서만 처리돼요
HTML과 JSX는 무엇이 다른가요
리액트의 JSX는 HTML처럼 보이지만 실제로는 자바스크립트라서 몇 가지 규칙이 달라요. 디자인 시안·부트스트랩 예제·SVG 아이콘을 그대로 붙여넣으면 오류가 나거나 경고가 쏟아지는 이유예요. 이 도구는 브라우저의 HTML 해석기로 코드를 읽은 뒤, 요소와 속성을 하나씩 JSX 규칙에 맞게 다시 써요.
바꾸는 것
- 속성 이름:
class→className,for→htmlFor,tabindex→tabIndex,maxlength→maxLength, SVG의stroke-width→strokeWidth,viewbox→viewBox.data-·aria-속성은 그대로 둬요. - style:
style="margin-top: 4px"→style={{ marginTop: "4px" }}처럼 객체로, CSS 변수(--main)는 따옴표 이름으로 바꿔요. - 빈 태그:
<br>,<img>,<input>은/>로 닫고, 내용이 없는 태그도 스스로 닫아요. - 이벤트:
onclick="login()"→onClick={() => { login() }}. 입력란의value·checked는 제어되지 않는 기본값인defaultValue·defaultChecked로 바꿔 경고가 나지 않게 해요. - 글과 주석: 글 속의
{}는{"{"}로 감싸고, HTML 주석은{/* */}로 바꿔요. 맨 위 요소가 여러 개면<>…</>로 감싸요.
참고할 점
<script>는 JSX 안에서 실행되지 않아 주석으로 남겨요. 결과 코드는 Babel(JSX) 해석기로 문법 오류가 없는지 확인했어요. HTML은 이 브라우저에서만 처리하고, 이미지나 링크를 불러오지 않는 안전한 방식(template 요소)으로 읽어요. 보기 좋은 줄바꿈까지 맞추려면 결과를 ‘코드 정렬기’(Prettier)에 넣으세요.
참고한 자료
자주 묻는 질문
Vue나 Svelte용으로도 바꿀 수 있나요?
Vue·Svelte 템플릿은 일반 HTML을 그대로 쓰기 때문에 변환이 필요 없어요. class, for 등을 그대로 두면 돼요.
줄바꿈이 원본과 달라요.
JSX에서는 여러 공백·줄바꿈이 한 칸으로 합쳐지거나 사라지기 때문에 글 속 공백을 정리했어요. 화면에 보이는 결과는 같아요.
style 숫자에 따옴표가 붙어요.
단위가 없는 숫자 중 line-height·opacity·z-index처럼 숫자 그대로 쓰는 속성은 숫자로, 나머지는 원본 글자를 그대로 문자열로 넣어요.
함께 쓰면 좋은 도구
- 코드 정렬기 (JS·TS·CSS·HTML·마크다운·YAML 포맷터)들여쓰기가 엉킨 자바스크립트·타입스크립트·JSX·CSS·SCSS·HTML·Vue·마크다운·YAML·JSON을 Prettier 규칙으로 한 번에 정리
- HTML 엔티티 변환 (< & 인코딩·디코딩)< > & 같은 글자를 < > &로 바꾸고, 가 같은 엔티티를 원래 글자로 풀기
- HTML 안전하게 정리 (XSS 스크립트·위험 속성 제거)붙여 넣은 HTML에서 script·onerror 같은 이벤트 속성·javascript: 링크·iframe 등 위험한 부분을 지우고, 무엇을 지웠는지 목록과 안전한 미리보기로 확인
- JSON → 타입 변환기 (TypeScript·Go·Python·Java·JSON Schema)API 응답 JSON을 붙여넣으면 TypeScript interface, Go struct, 파이썬 dataclass·Pydantic, 자바 record, JSON Schema를 자동으로 만들기
- JSON 정리 (보기 좋게 들여쓰기·검증·압축)JSON을 보기 좋게 들여쓰기, 오류 위치 표시, 한 줄 압축, 키 정렬, 문자열 이스케이프
- 정규식 테스트 (정규표현식 매칭 확인)패턴과 플래그로 일치하는 부분을 강조 표시, 그룹 값 표, 바꾸기 미리보기, 자주 쓰는 패턴