
classnames๋ CSS ํด๋์ค ์ด๋ฆ์ ์กฐ๊ฑด๋ถ๋ก ์ฝ๊ฒ ์กฐํฉํ ์ ์๊ฒ ๋์์ฃผ๋ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. React, Vue ๋ฑ์์ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ํนํ ์กฐ๊ฑด์ ๋ฐ๋ผ ํด๋์ค ์ด๋ฆ์ ๋์ ์ผ๋ก ์ ์ฉํ ๋ ์ ์ฉํ๋ค.
classnames๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํด๋์ค๋ฅผ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ก ๋ฌถ์ด์ ํ ๋ฒ์ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๊ธด ๋ฌธ์์ด๋ก ์กฐ๊ฑด๋ถ ํด๋์ค ์์ฑํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๊น๋ํ์ฌ ๊ฐ๋
์ฑ์ด ํฅ์๋๋ค.
npm i 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'
// ex
// isActive์ด๋ฉด active์ ์ฉ
<div className={cx({'active': isActive })} >
// isActive์ด๋ฉด .cotainer.isActive์ ์ฉ
<div className={cx('container', { active: isActive })}>