classnames 라는 라이브러리는 리액트에서 클래스 이름을 동적으로 설정할 때 유용하게 사용되는 라이브러리이다.
https://www.npmjs.com/package/classnames
설치방법
리액트
npm install classnames --save
타입스크립트
npm install classnames --save
npm install --save @types/classnames
사용 방법
여러 가지 종류의 파라미터를 조합해 CSS 클래스를 설정할 수 있기 때문에 컴포넌트에서 조건부로 클래스를 설정할 때 매우 유용하다.
import classNames from 'classnames';
// ...
return <div className={classNames({
'my-default-class': true,
'my-conditional-class': someCondition
})}>Hello</div>;
프로젝트에서 사용
프로젝트에서 사용 1
import classNames from 'classnames';
// ...
return (
<div className="calandar-grid">
{viewDate.map((item) => (
<div key={item.full}>
<p className={classNames({ 'tomato-color': item.restDay })}>{item.day}</p>
<p>{item.holiday_name}</p>
</div>
))}
</div>
);
#css 파일
.tomato-color {
color: tomato;
}
프로젝트에서 사용(조금 더 상세하게 조건 주기)
<div className="calendar-grid">
{viewDate.map((item) => (
<div
key={item.full}
className={classnames("day", {
thisMonth: item.thisMonth,
"not-thisMonth": !item.thisMonth,
sunday:
item.thisMonth && item.week === Week.SUN,
saturday:
item.thisMonth && item.week === Week.SAT,
holiday: item.thisMonth && item.holiday,
})}
>
<p>{item.day}</p>
<p>{item.holiday_name}</p>
</div>
))}
</div>
#css 파일
.day.thisMonth {
color: black;
}
.day.not-thisMonth {
color: rgb(175, 175, 175);
}
.day.thisMonth.sunday {
color: tomato;
}
.day.thisMonth.saturday {
color: rgb(85, 40, 246);
}
.day.thisMonth.holiday {
color: tomato;
}
'리액트' 카테고리의 다른 글
리액트 useImperativeHandle, forwardRef로 부모 컴포넌트가 자식 컴포넌트의 메서드나 변수에 직접 접근 (0) | 2024.01.17 |
---|---|
리액트에서 dangerouslySetInnerHTML 렌더링하기 (0) | 2023.10.11 |
리액트에서 string 데이터와 ReactElement가 혼합된 데이터 렌더링 하기 (0) | 2023.10.11 |
FileReader로 파일 읽고 업로드한 파일 미리보기 구현 (0) | 2023.09.18 |
리액트 컴포넌트에서 axios API 요청하기 (0) | 2023.08.24 |
리액트에서 조건부 클래스 이름줄 때 classNames 라이브러리 사용