본문 바로가기
개발/React

리액트 - module.css로 CSS 스타일 관리하기

by 피로물든딸기 2024. 2. 21.
반응형

리액트 전체 링크

 

참고

styled-components로 타이핑 효과 만들기
module.css로 CSS 스타일 관리하기
classnames로 CSS 스타일 조건부 렌더링하기

 

아래 컴포넌트를 실행시켜 보자.

input에서 my_input 클래스의 스타일을 설정한다.

import React from "react";

import "./CssTest.css";

const CssTest = () => {
  return (
    <div>
      <input
        className="my_input"
        type="text"
        placeholder="CSS TEST"
      />
    </div>
  );
};

export default CssTest;

 

CssTest.css에서 my_input 클래스의 background-colorblue로 설정하였다.

.my_input {
  border: 0;
  margin : 10px;
  padding: 10px;
  border-radius: 10px;
  background-color: blue;
}

 

하지만 배경색은 회색으로 정상적으로 설정되지 않았다.

 

원인은 App.js에 있던 App.css가 전역적으로 설정되기 때문이다.

import "./App.css";

function App() {
	...
}

export default App;

 

App.css에도 my_input 클래스가 있었고, 해당 스타일이 다른 컴포넌트에도 영향을 미치게 되었다.

.my_input {
  border: 0;
  margin : 10px;
  padding: 10px;
  border-radius: 10px;
  background-color: #cecece;
}

module.css 적용하기

 

위의 상황을 해결하기 위해 module.css를 적용해 보자.

CssTest.css의 이름을 CssTest.module.css로 변경하고 import 구문을 아래와 같이 수정한다.

그리고 module.css로 이름을 설정하면 classNamestyles.my_input이라고 명확하게 설정할 수 있다.

import React from "react";
import styles from "./CssTest.module.css";

const CssTest = () => {
  return (
    <div>
      <input
        className={styles.my_input}
        type="text"
        placeholder="CSS TEST"
      />
    </div>
  );
};

export default CssTest;

 

module.css가 내부적으로 클래스 이름을 자동으로 고유한 이름이 되도록 생성하기 때문이다.

 

이제 배경색이 정상적으로 파란색으로 변경되었다.

 

참고로 반드시 [CSS_File_Name].module.css라는 이름을 사용하고 styles import 해야 정상적으로 적용된다.

반응형

댓글