반응형
React로 프로젝트를 만들던 도중에 style을 준 적이 없는데 이상하게 화면이 보인 적이 있었습니다.
찾아보니 컴포넌트끼리 같은 클래스명을 사용하면 충돌이 일어난다고 하네요..
그래서 이를 해결할 방법을 찾아보니 css-module을 사용하면 충돌을 막을 수 있다고 합니다!!
css-module 사용하기
/* 주의!! */
/* React에서 css-module을 사용할 땐, 클래스명을 abc-efg 하면 안되고 abcEfg 로 지어야 오류가 안 생긴다. */
.itemsList {
background-color: #E67E22;
margin: 0 auto;
}
.item {
color: #ffffff;
font-size: 18px;
}
import style from './style.css';
function App() {
return (
<ul className={`${style.itemsList`}>
<li className={`${style.item}`}>홈</li>
<li className={`${style.item}`}>레시피</li>
<li className={`${style.item}`}>나눔/신청</li>
<li className={`${style.item}`}>채팅</li>
<li className={`${style.item}`}>마이페이지</li>
</ul>
);
}
css-module 작성하는 법
- {`${CSS명.클래스명}`}
css-module 단점
- 코드를 작성하기 번거롭고, 가독성이 좋지 못합니다.
이를 해결하기 위해 classnames 패키지를 사용하면 됩니다!
패키지를 사용하기 위해 아래와 같이 터미널에 명령을 입력해주세요.
npm i -S classnames
import style from './style.css';
import cn from 'classnames';
function App() {
return (
<ul className={cn(style.itemList)}>
<li className={cn(style.item)}>홈</li>
<li className={cn(style.item)}>레시피</li>
<li className={cn(style.item)}>나눔/신청</li>
<li className={cn(style.item)}>채팅</li>
<li className={cn(style.item)}>마이페이지</li>
</ul>
);
}
classnames로 css-module 작성하는 법
- {classnames명(CSS명.클래스명)}
clssnames 장점
- classnames 패키지 덕분에 코드 작성하기 간단해졌고 이해하기 더 쉬워졌습니다.
앞으로 컴포넌트를 여러 개 만들 땐 꼭 css-module을 사용해야겠습니다.
728x90
'React JS' 카테고리의 다른 글
:URL 파라미터와 useParams()로 상세페이지 만들기 (0) | 2022.12.18 |
---|---|
메뉴 클릭하면 색상 변경하기 (0) | 2022.12.13 |
드랍 다운 메뉴 만들기 (0) | 2022.12.09 |
리액트 개발환경 만들기 (0) | 2022.12.04 |
노마드코더 영화 API 사용하기 (0) | 2022.02.14 |