티스토리 뷰
Study-Note/react
[react] module styles.className 2개 사용 & 조건값으로 사용하는 패키지 classnames
Ji-u 2021. 12. 20. 11:47안녕하세요! 좋아요요정입니다.
className을 두개 이상 사용하고 싶을 때, 조건 결과값에 맞게 출력하고 싶을 때 사용하는 패키지를 소개합니다.
결과 미리보기 💕
- 동일한 card 컴포넌트인데 상단 3개는 main 클래스를 적용함.
- 설정된 클래스명이 있을 경우 적용됨
1. 설치하기
Yarn add classnames
//혹은
npm i classnames
- 사용할 프로젝트에 설치해주세요!
2. 간단한 사용 방법(git에 작성되어 있는 내용)
import classNames from 'classnames';
...
classNames('foo', 'bar'); // => 'foo bar'
classNames('foo', { bar: true }); // => 'foo bar'
classNames({ 'foo-bar': true }); // => 'foo-bar'
classNames({ 'foo-bar': false }); // => ''
classNames({ foo: true }, { bar: true }); // => 'foo bar'
classNames({ foo: true, bar: true }); // => 'foo bar'
// lots of arguments of various types
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
// other falsy values are just ignored
classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'
값이 true일 경우 클래스네임이 포함되게 사용할 수 있습니다. 두개 그 이상도 사용 가능해요 :) 굿굿!!
출처: https://www.npmjs.com/package/classnames
3. 사용방법
- 컴포넌트에 커스텀클래스명을 전달하고, 그 값을 포함한 스타일을 적용.
- 조건: module.css 사용
컴포넌트
import React from 'react';
import styles from './card.module.css';
import cn from 'classnames'; //cn으로 명칭 변경
const Card = ({customClassName, card}) => {
function getStyles(customClassName) {
if(!customClassName) {return;}
switch(customClassName) {
case 'main' : return styles.main;
default : return;
}
}
return (
<li className={cn(styles.card, getStyles(customClassName))}>
<h3>Test</h3>
<p>Testing...{card.name}</p>
</li>
)
};
export default Card;
- props 인자로 customClassName을 받습니다.
- getStyles() 함수를 통해 값이 있을 경우 값에 해당하는 styles.클래스명을 출력합니다.
사용하는 위치
import React from 'react';
const Home = (props) => {
const cards = [
{name: 'card1', value: 5, key: 1},
{name: 'card2', value: 5, key: 2},
{name: 'card3', value: 5, key: 3},
]
return (
<>
<h1>home11</h1>
<ul>
{ cards.map(card => <Card customClassName="main" key={card.key} card={card} />}
{ cards.map(card => <Card key={card.key} card={card} />}
</ul>
</>
)
}
export default Home;
- 커스텀클래스명이 필요할 경우 인자값으로 전달합니다.
getStyles() 함수를 사용한 이유는 `styles.${customClassName}`으로 바로 입력할 경우 문자열로 인식되어 적용되지 않았습니다.
그래서 함수를 이용해 없는 경우 return, 설정된 값이 있는경우 적용할 수 있도록 구현했습니다.
누군가에게 필요한 정보였기를! 좋은 하루되세요~~
'Study-Note > react' 카테고리의 다른 글
[react] 타이핑치는 효과 컴포넌트 (0) | 2021.12.18 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 면접
- JavaScript
- 메서드
- 프론트엔드
- 프로퍼티
- 함수
- 자바스크립트
- 타이핑효과
- this
- 프로토타입
- 스터디
- JS
- 생성자함수
- Call
- react
- 선언
- Python
- 리액트
- 상속
- Prototype
- 파이썬
- 면접대비
- 스택
- 팀러버덕
- SET
- 타이핑
- 복제
- 객체
- 코딩테스트
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함