[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๋ โ๋ฐ๋ณต์ด ์ค์ ๋ก ์๊ธฐ๊ธฐ ์ ์ ์ถ์ํํ์ง ๋ง๋ผโ๋ ์ชฝ์ด๋ผ, ๋ ๋ฒ์งธ ์ฌ์ฉ์ฒ๊ฐ ๋์ฌ ๋ ๊ณตํตํํ๋ ๊ฒ ์ ์์ด๋ค.
Leave a comment