이런 식으로 여러 가지 종류의 파라미터를 조합해 CSS 클래스를 설정할 수 있기 때문에 컴포넌트에서 조건부로 클래스를 설정할 때 매우 편합니다. 예를 들어 props 값에 따라 다른 스타일을 주기가 쉬워지죠.
예시 코드
const MyComponent = ({ highlighted, theme }) => ( <div className={classNames('MyComponent', { highlighted }, theme)}>Hello</div> );
이렇게 할 경우, 위 엘리먼트의 클래스에 highlighted 값이 true이면 highlighted 클래스가 적용되고, false이면 적용되지 않습니다. 추가로 theme으로 전달받는 문자열은 내용 그대로 클래스에 적용됩니다.
이런 라이브러리의 도움을 받지 않는다면 다음과 같은 형식으로 처리해야 할 것입니다.
예시 코드
const MyComponent = ({ highlighted, theme }) => ( <div className={`MyComponent ${theme} ${highlighted ? 'highlighted' : ''}`}> Hello </div> );
classnames를 쓰는 것이 가독성이 훨씬 높지요?