๋ฐ˜์‘ํ˜•

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ CSS Module ์˜ค๋ฅ˜ ํ•ด๊ฒฐ


ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ CSS Module์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“ˆ/์„ ์–ธ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ํƒ€์ž… ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜จ๋‹ค. src ํ˜น์€ ์ปดํฌ๋„ŒํŠธ ํด๋”์— ์•„๋ž˜ ๋‚ด์šฉ์ด ๋‹ด๊ธด typings.d.ts ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. via StackOverFlow

// Toggle/typings.d.ts
declare module '*.module.css' {
  const classes: { [key: string]: string };
  export default classes;
}

 

CSS Module ์‚ฌ์šฉ๋ฒ•


โถ [name].module.css ํ˜•ํƒœ๋กœ CSS ๋ชจ๋“ˆ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ 

/* Toggle/Toggle.module.css */
.toggle-bg:after {
  /* ... */
}

 

โท ์ปดํฌ๋„ŒํŠธ์—์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ. CSS ๋ชจ๋“ˆ์— ์ •์˜ํ•œ ํด๋ž˜์Šค๊ฐ€ kebob-case ๋ผ๋ฉด class์— ์ ‘๊ทผํ•  ๋• computed property๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. e.g. styles['class-name']

// Toggle/Toggle.tsx
import styles from './Toggle.module.css'; // import ์ด๋ฆ„ ์ž„์˜ ์ง€์ • ๊ฐ€๋Šฅ

// ์ปดํฌ๋„ŒํŠธ ๋ณธ๋ฌธ์˜ return๋ฌธ
// ๋ฐฉ๋ฒ• 1 : className ์†์„ฑ์— ์ถ”๊ฐ€
return <div className={styles['toggle-bg']} />;
// ๋ฐฉ๋ฒ• 2 : classnames ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์‹œ
return <div className={classnames('bg-white ...', styles['toggle-bg'])} />;

 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•