코드/React

class를 안쓰고 className을 쓰는 이유

juundev 2024. 6. 20. 22:14

개요

React를 사용하여 개발을 했던 사람이라면 element 요소 내 className을 사용하는 것을 알 것이다.

본인은 React에서는 class 대신에 className을 사용하는구나 정도로 이해했지만, 문득 "왜 그럴까?" 라는 의문이 생겨 찾아 공부하고 글을 남기려고 한다.

 

JavaScript 예약어 충돌 회피

  • 'class'는 자바스크립트에서 예약어로 사용된다.
  • 클래스 정의에 사용되며, 이를 속성명으로 사용할 경우 혼란이 발생할 수 있다.
  • 따라서, JSX에서는 혼동을 피하기 위해 'class' 대신 'className'을 사용하여 CSS 클래스를 지정한다.

React의 JSX 문법

  • JSX는 자바스크립트 코드 안에서 XML을 사용하는 문법으로, XML과 자바스크립트가 혼합된 형태이다.
  • JSX는 자바스크립트로 트랜스파일되기 때문에 자바스크립트 예약어를 피하는 것이 중요하다.

예제

HTML에서의 class 사용

<!-- 일반 HTML에서는 class 속성을 사용 -->
<div class="my-class">Hello, World!</div>

 

React(JSX)에서의 className 사용

// React JSX에서는 className 속성을 사용
const MyComponent = () => {
  return <div className="my-class">Hello, World!</div>;
};

export default MyComponent;

 

컴파일 결과

JSX는 컴파일 과정에서 자바스크립트 함수 호출로 변환된다.

// JSX 컴파일 결과
React.createElement('div', { className: 'my-class' }, 'Hello, World!');

 

이처럼 'className'이 속성으로 설정되어, HTML의 'class'와 동일한 역할을 하게 된다.

 

요약

  • 'class'는 자바스크립트 예약어이기 때문에, React에서는 혼란을 피하기 위해 'className'을 사용한다.
  • 'className'은 JSX 문법에서 CSS 클래스를 지정하는 표준 방식이다.
  • 이는 React에서 HTML자바스크립트 간의 문법 충돌방지하고, 명확하고 일관된 코드를 작성할 수 있게 한다.

'코드 > React' 카테고리의 다른 글

[React] 반응형 웹개발 가이드라인(Custom Hook)  (3) 2024.10.14
생명주기(Lifecycle)  (0) 2024.06.20
Virtual Dom이란?  (0) 2024.06.20
React에서 Audio 사용하기  (0) 2024.02.28