티스토리 뷰
반응형
classNames는 SCSS에서 className들을 조합해주는 역할을 한다.
className은 SCSS에서 CSS를 각 tag들에 적용해주는 역할을 한다.
우선 classNames를 사용하기 위해서는 classnames라는 패키지를 설치해줘야 한다.
$ npm install classnames
가장 먼저 classNames를 import 해줘야 한다.
import classNames from 'classnames'
그리고 각각 필요한 CSS들을 조합해 줄 수 있다.
classNames('foo', 'bar'); // => 'foo bar'
classNames('foo', { bar: true }); // => 'foo bar'
classNames({ foo: true }, { bar: false }); // => 'foo'
마지막으로 조합한 예시는 다음처럼 사용이 가능하다.
import classNames from 'classnames'
import React from 'react'
import styles from './Button.module.scss';
const Button = ({
type = 'button',
secondary = false,
bgColor,
fgColor,
width,
...restProps
}) => {
const composeClasses = classNames(
styles.button,
secondary ? styles.secondary : styles.primary
)
const style = {
backgroundColor: bgColor || '',
color: fgColor || '',
width: width || '',
};
return (
<button
className={composeClasses}
type={type}
style={style}
{...restProps}
/>
)
}
export default Button
composeClasses처럼 따로 변수로 빼서 사용이 가능하다.
위에서 보면 secondary라는 값이 true일때는 styles.button + styles.secondary를 사용하는 것이고,
false일때에는 styles.button + styles.primary를 사용한다는 예제이다.
참고
728x90
반응형
'Front End > REACT' 카테고리의 다른 글
React, Next.js, Firebase를 사용한 Google 소셜 로그인(2) - 이메일/비밀번호 (1) | 2023.10.19 |
---|---|
React, Next.js, Firebase를 사용한 Google 소셜 로그인(1) - 환경세팅 (1) | 2023.10.15 |
[React / Next.js] 페이지 UI 생성하기 (0) | 2023.10.03 |
[React / Next.js] 전역 스타일링 적용 (0) | 2023.10.03 |
[React / Next.js] 어플리케이션 라우팅(url 생성) 구조 (0) | 2023.10.03 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리액트
- KAFKA
- Producer
- caching
- rhel
- cs
- Container
- broker
- backend
- spring
- K8S
- centos
- Data Engineering
- zookeeper
- spring boot
- frontend
- apache
- 프론트엔드
- Front
- Java
- NextJS
- apache kafka
- consumer
- React
- JPA
- feign client
- Firebase
- OS
- API
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
250x250