[React] React에서 Css module 적용하기

2025. 1. 21. 22:44·React

팀 프로젝트하면서 React에서 화면 퍼블리싱을 하면 꼭 내 화면 css가 망가지는 불편했던점이 있었다.

className이나 id에 설정한 이름이 같으면 따로 import를 하지 않았는데도 다른 파일에 전역으로 css가 먹혀서 내 css가 망가져버린다. 그래서 서로 className이나 id에 자기 이름 이니셜을 넣어서 설정하거나 겹치지 않게 아예 길고 복잡하게(?) 설정을 하는 방식으로 진행을 했었다. 나는 이 불편함을 해결할 방법을 찾아본적은 딱히 없고 원래 그런가보다.. 리액트 버그구나.. 하고 넘겼다.

이번에 진행하는 프로젝트 팀에서는 팀원 한명이 css를 모듈화하면 겹칠일이 없다고 무언가를 알려주었다.

처음에 말로만 설명을 들으니 어떻게 사용하는건지 모르겠어서 팀원에게 작업한 파일을 push 부탁하고 pull 받아서 확인했다.

 

Css module이란?

Css Module은 클래스 이름을 자동으로 고유화하여 컴포넌트 단위로 스타일 충돌을 방지하는 Css 파일이다.

 

 

사용 방법

1. TypeScript에서 CSS Modules을 사용할 타입 정의를 제공하기 위한 파일 생성한다.

*.module.css 확장자로 끝나는 css 파일을 모듈로 인식하도록 선언해둔 것이다.

  • global.d.ts
// src/global.d.ts
declare module '*.module.css' {
    const classes: { [key: string]: string };
    export default classes;
  }

 

2. 사용할 컴포넌트 파일에 import 한다.

css 파일을 .module.css로 파일을 생성하고 사용되는 곳에 import를 해주면 된다.

import styles from "./PlanHeader.module.css";

 

3. className, id 이름 앞에 styles. 를 붙여준다.

여기서 한가지 중요한점은 '-' 사용은 불가하고 '_'만 사용이 가능하다.

 <div className={styles.travel_plan_list_header}>

css파일에는 .travel_plan_list_header 로 코드를 작성하면 된다.

.travel_plan_list_header {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 30px;
  border-bottom: 3px solid var(--grey-1);
  background-color: var(--white);
}

작업했던 파일을 전부 수정해야하는 번거로움이 있었지만.. css 충돌 방지를 할 수 있어서 좋은것 같다.

'React' 카테고리의 다른 글

[React] fixed로 고정된 위치, 알고 보니 뷰포트 기준  (0) 2025.01.22
[React] REST, REST API, RESTful API의 개념과 특징, 장단점, 사용 방법 및 예시  (1) 2025.01.21
[React] 프로젝트 폴더 구조 정리부터 퍼블리싱까지(작업 기록)  (0) 2025.01.18
[React] 기존 React 프로젝트에 TypeScript 설치하기  (0) 2025.01.15
[React] 프로젝트 생성 시 발생하는 @testing-library/react 호환 문제 (React 19)  (0) 2025.01.13
'React' 카테고리의 다른 글
  • [React] fixed로 고정된 위치, 알고 보니 뷰포트 기준
  • [React] REST, REST API, RESTful API의 개념과 특징, 장단점, 사용 방법 및 예시
  • [React] 프로젝트 폴더 구조 정리부터 퍼블리싱까지(작업 기록)
  • [React] 기존 React 프로젝트에 TypeScript 설치하기
dud9902
dud9902
개발자 취준생 기록일지
  • dud9902
    dud's DevStory
    dud9902
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • SpringBoot (14)
      • React (12)
      • Python (14)
      • AI (21)
      • DB (5)
      • Figma (1)
      • Markdown (1)
      • AWS (6)
      • 기타 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링부트
    docker
    react
    Agent
    Python
    SQLAlchemy
    langchain
    AWS
    pytorch
    FastAPI
    pydantic
    redis
    의존성 주입
    miniforge
    springboot
    twilio
    db
    AI
    CrewAI
    recognize anything
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dud9902
[React] React에서 Css module 적용하기
상단으로

티스토리툴바