클래스 이름을 동적으로 적용하기
다양한 조건에 따라 클래스 이름을 동적으로 적용하고자 할 때 유용한 유틸리티 함수
export function classNames(...classes) {
return classes.filter(Boolean).join(' ');
}
👉🏻 배열의 각 요소를 Boolean 생성자 함수에 전달하여 falsy 값(false, 0, '', null, undefined, NaN)을 걸러낸 후 하나의 문자열로 결합
example
function Button({ isDisabled }) {
// 버튼의 클래스를 결정합니다.
// isDisabled 값에 따라 'disabled' 클래스가 추가되거나 제거됩니다.
const buttonClass = classNames(
'btn', // 기본 클래스
'btn-primary', // 기본 스타일을 위한 클래스
isDisabled && 'disabled' // 조건부 클래스 (isDisabled가 true일 때만 'disabled' 클래스 추가)
);
return (
<button className={buttonClass} disabled={isDisabled}>
Click me!
</button>
);
}
export default Button;
isDisabled가 true일 때, 버튼의 className은 "btn btn-primary disabled"
false일 때는 "btn btn-primary"
<div
className={classNames(
'gap-[5.7%] bg-white rounded-full flex items-center w-full text-black font-medium',
isWindow ? 'pt-[6%] pb-[4.8%] px-[5.9%]' : 'py-[4.8%] px-[5.9%]',
isRightAlign && 'flex-row-reverse'
)}
>
tw-merge & clsx를 사용하는 방법
import clsx, { type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
Last updated