[260512] TIL

Today I Learned (2026-05-12)

์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฉ”๋ชจ

  • export๋Š” ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ๋‘๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ณ , <section> ๋ž˜ํผ ์—†์ด ~Section์ด๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์ด๋ฉด ๋™๋ฃŒ ์ž…์žฅ์—์„œ ์ผ๊ด€์„ฑ์ด ๊นจ์ ธ ๋ณด์ธ๋‹ค. ๋„ค์ด๋ฐ์€ ์‹ค์ œ ๊ตฌ์กฐ์™€ ์ง์ด ๋งž์•„์•ผ ํ•œ๋‹ค.
  • ์ƒํƒœ๋ฅผ props๋กœ ๋„˜๊ธฐ์ง€ ์•Š์œผ๋ฉด uncontrolled ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋˜์–ด ์‹œ๊ฐ ์ƒํƒœ์™€ React state๊ฐ€ ์–ด๊ธ‹๋‚  ์ˆ˜ ์žˆ๋‹ค. ํ•จ๊ป˜ ๊ด€๋ฆฌ๋ผ์•ผ ํ•˜๋Š” ๊ฐ’์ด๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ™์ด ๋„˜๊ธฐ๋Š” ๊ฒŒ ์ข‹๋‹ค.

controlled vs uncontrolled

  • ํ†ต์ œ์˜ ๋ณธ์งˆ์€ โ€œ์ง„์‹ค์˜ ์ถœ์ฒ˜๊ฐ€ ์–ด๋””๋ƒโ€๋‹ค. checked(๋˜๋Š” value)๋ฅผ ๋„˜๊ฒจ์•ผ React๊ฐ€ ๋งค๋ฒˆ DOM์— ๊ฐ’์„ ๋ฐ€์–ด๋„ฃ์–ด controlled๊ฐ€ ๋˜๊ณ , onChange๋Š” โ€œ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๊ธˆ ๋ญ”๊ฐ€ ํ–ˆ๋‹คโ€๋Š” ์•Œ๋ฆผ ์ฑ„๋„์ผ ๋ฟ ํ†ต์ œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ชจ๋‹ฌ์ด unmount ์—†์ด hide๋งŒ ๋˜๋Š” ํŒจํ„ด์—์„œ uncontrolled ์ฒดํฌ๋ฐ•์Šค๋Š” ์ƒํƒœ๊ฐ€ DOM์— ๋‚จ์•„, ๋‹ค์‹œ ์—ด๋ฉด ์ด์ „ ์ฒดํฌ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ณด์ธ๋‹ค. controlled๋กœ ๋ฐ”๊ฟ” React๋ฅผ ๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›์œผ๋กœ ๋‘๋ฉด setState ํ•œ ๋ฒˆ์— ์‹œ๊ฐ ์ƒํƒœ๊นŒ์ง€ ๋งž์ถฐ์ง„๋‹ค.

Tailwind group/peer/has, inert vs disabled

  • ์ง์ ‘ ํ˜•์ œ ๊ด€๊ณ„๋Š” peer-*, ๋ถ€๋ชจโ†’์ž์‹ ์ „ํŒŒ๋Š” group-*, ํผ ์•ˆ ์–ด๋”˜๊ฐ€์˜ ์กฐ๊ฑด์„ ๋ณด๊ณ  ๋‹ค๋ฅธ ์š”์†Œ์— ๋ฐ˜์˜ํ•  ๋• group-has-[...]๋ฅผ ์“ด๋‹ค.
  • disabled๋Š” ํผ ์š”์†Œ ํ•œ์ • ์‹œ๋งจํ‹ฑ์ด๋ผ SVGยทdiv์˜ ํด๋ฆญ์€ ๋ชป ๋ง‰๋Š”๋‹ค. ์˜์—ญ ์ „์ฒด๋ฅผ ๋ง‰๊ณ  ์ ‘๊ทผ์„ฑ ํŠธ๋ฆฌ์—์„œ๋„ ๋นผ๋ ค๋ฉด inert๋ฅผ ์จ์•ผ ํ•œ๋‹ค. ๋‹ค๋งŒ inert ์˜์—ญ์˜ input ๊ฐ’์€ ํผ ์ œ์ถœ์— ๊ทธ๋Œ€๋กœ ํฌํ•จ๋˜๊ณ , disabled๋งŒ ๊ฐ’์—์„œ ์ œ์™ธ๋œ๋‹ค.

YAGNI vs DRY

  • ํ•œ ๊ณณ์—์„œ๋งŒ ์“ฐ๋Š” ์ปดํฌ๋„ŒํŠธ์— sizeยทvariantยทicon ๊ฐ™์€ props๋ฅผ ๋ฏธ๋ฆฌ ๋‹ค ์—ด์–ด๋‘๋ฉด ์“ฐ์ง€ ์•Š๋Š” ์ฃฝ์€ ์ฝ”๋“œ๊ฐ€ ๋˜๊ธฐ ์‰ฝ๋‹ค. DRY๊ฐ€ โ€œ๋ฐ˜๋ณต์„ ์ค„์—ฌ๋ผโ€๋ผ๋ฉด YAGNI๋Š” โ€œ๋ฐ˜๋ณต์ด ์‹ค์ œ๋กœ ์ƒ๊ธฐ๊ธฐ ์ „์—” ์ถ”์ƒํ™”ํ•˜์ง€ ๋งˆ๋ผโ€๋Š” ์ชฝ์ด๋ผ, ๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ์ฒ˜๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ๊ณตํ†ตํ™”ํ•˜๋Š” ๊ฒŒ ์ •์„์ด๋‹ค.

Categories:

Updated:

Leave a comment