github.com/radix-ui/react-useControllableState ์์ค์ฝ๋ primitives/packages/react/use-controllable-state/src/useControllableState.tsx at main · radix-ui/primitivesRadix Primitives is an open-source UI component library for building high-quality, accessible design systems and web apps. Maintained by @workos. - radix-ui/primitivesgithub.com ๐น๏ธ useControllableState() ๋?Radix ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ React ํ
์ผ๋ก, ์ ..
์๋จ ๋ด์ฉ ์์ฑ ์์ ( 2025-01-31 ~ ) 2025. 02. 02 ์ถ๊ฐโ useControllableState() ๊ณต๋ถโ ReactNode, ReactChild, ReactElement ๊ณต๋ถ ํ, ์ฌ์์ฑ ๋ ์์ (์๋ง ์ฝ๋ ๋ํ ๋ณ๊ฒฝ๋ ์์ ) ํฉ์ฑ ์ปดํฌ๋ํธ์๋ ๋ค์๊ณผ ๊ฐ๋ค 1. Header, Body, Footer๋ฅผ ๋ชจ๋ ํธ์ถํ ๊ฒฝ์ฐ2. Body์ Footer๋ง ํธ์ถํ ๊ฒฝ์ฐ3. Body๋ง ํธ์ถํ๊ณ Body์ ์คํ์ผ๋ง์ ๋ฎ์ด์์ด ๊ฒฝ์ฐ์ฌ์ฉ์๊ฐ ํ์ํ ์ปดํฌ๋ํธ๋ง์ ํธ์ถํจ์ ๋ฐ๋ผ ๋ค์ํ ๋ชจ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๋ค.๋ํ ๊ฐ ์ปดํฌ๋ํธ์ className(tailwindCSS), style์ props๋ก ๋๊ฒจ์ฃผ์ด ๋์์ธ์ ์์ ํ ์ ์๋ค. ๐ App.tsx (ํ์ํ ๊ฒฝ์ฐ ํผ์ณ์ ๋ณด๊ธฐ)๋๋ณด๊ธฐim..
์ฐธ๊ณ ์ฌ์ดํธ• ์นด์นด์ค - FE ๊ธฐ์ ๋ธ๋ก๊ทธ / ์ปดํฌ๋ํธ ์ถ์ํ• velog - jinoo.io / ์ปดํฌ๋ํธ๋ฅผ ๋ ๊ณ ์ฒ๋ผ ์์๋ณด์! *์ถ์ํ: ์ฌ๋ฌ ๊ฐ์ง ์ฌ๋ฌผ์ด๋ ๊ฐ๋
์์ ๊ณตํต๋๋ ํน์ฑ์ด๋ ์์ฑ ๋ฐ์๋ฅผ ์ถ์ถํ์ฌ ํ์
ํ๋ ์์ฉ ๐ ์ปดํฌ๋ํธ์ ์ถ์ํํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ(ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒ ๋๋ค.์ปดํฌ๋ํธ ๋จ์์ ๊ฐ๋ฐ๋ก ์ฅ์ ์ ๋ฌด์์ผ๊น? ๐๐ป ์ฅ์ 1. ์ฌ์ฌ์ฉ์ฑ: ์ปดํฌ๋ํธ๋ ๋
๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ๋ธ๋ก์ผ๋ก, ์ฌ๋ฌ ๊ณณ์์ ๋์ผํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.์ด๋ ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค.2. ์ ์ง๋ณด์ ์ฉ์ด์ฑ: ์ปดํฌ๋ํธ๋ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ํน์ ๊ธฐ๋ฅ์ด๋ UI ์์๋ฅผ ์์ ํ ๋ ํด๋น ์ปดํฌ๋ํธ๋ง ์
๋ฐ์ดํธํ๋ฉด ๋๋ค.์ด๋ ์ฝ๋์ ๊ฐ๋
์ฑ์ ..
"๐ก ๋ณด๊ธฐ ์ข์ ๋ก์ด ๋จน๊ธฐ๋ ์ข๋ค"์ฌ๋์ ์ค๊ฐ ์ค ๊ฐ์ฅ ๋ฐ๋ฌํ ๊ฐ๊ฐ์ด ์๊ฐ์ด๋ผ๊ณ ํ๋ค.์ธ๋ถ ์๊ทน์ ๋ํ ๋ฐ์์ด ๊ฐ์ฅ ๋ฏผ๊ฐํ๊ณ ๋น ๋ฅธ ๊ฐ๊ฐ์ด๊ธฐ๋ํ๋ค๊ณ ํ๋ค.์ ์๋ด์ด ๊ดํ ์๋ ๋ง์ด ์๋๋ฉฐ, ์์๋ ์๋ฆฌ๋ฅผ ์ทจ๋ฏธ๋ก ํ๋ฉด์ ํ๋ ์ดํ
์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.๊ธฐ๋ฅ๋ ์ค์ํ์ง๋ง, ๋์์ธ ๋ํ ๋ฌด์ํ ์ ์์ผ๋ฉฐ, ์ด ๋์์ธ์ด ์ฌ์ฉ์์๊ฒ ์ผ๋ง๋ ํธ๋ฆฌํ์ง ๋ํ ๊ต์ฅํ ์ค์ํ๋ค. ์ ์ฒด์ ์ธ ๋์์ธ์ ์ํด ์ปดํฌ๋ํธ๋ฅผ ํ๋์ฉ ์ ์ํ๊ฒ ๋ ํ
๋ฐ ์ด๋, ์ ์ฉํ Headless UI์ ๋ํด ์์๋ณด์. ๐ค HeadlessHeadless๋, ๋์์ธ ์์ด ๊ธฐ๋ฅ๋ง ์ ๊ณตํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.์ ๊ทผ์ฑ, ์ํ๊ด๋ฆฌ์ ๊ฐ์ ๋ณต์กํ ๋์์ ์ฒ๋ฆฌํ๋ฉด์ ๊ฐ๋ฐ์๊ฐ ์คํ์ผ์ ์์ ํ ์ ์ด ํ ์ ์๋ค. `MUI`, `Bootstrap` ๋ฑ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ธฐ..
์ฐธ๊ณ ์ฌ์ดํธ* ์นด์นด์ค FE ๊ธฐ์ ๋ธ๋ก๊ทธ ์ํ ๋ฏน ๋์์ธ์ ํ์ฉํ ๋์์ธ ์์คํ
๋์
๊ธฐ | ์นด์นด์ค์ํฐํ
์ธ๋จผํธ FE ๊ธฐ์ ๋ธ๋ก๊ทธ์ ํธ์ผ(harry) ์นด์นด์คํ์ด์ง์์ ์น ํ๋ก ํธ์๋๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ง๋ณด๋ค ๋ฐ์ ๋์๋ค๋๋ ๊ฑธ ์ข์ํฉ๋๋ค.fe-developers.kakaoent.comํด๋น ํ์ด์ง์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ, ๋จธ๋ฆฟ์์ ๋ด๊ธฐ ์ํด ์ ์ด๊ฐ๋ฉด์ ๊ณต๋ถ (๋์ .. ๋์ ..) ๐งฉ ์ปดํฌ๋ํธ์ ํํธํ๋น์ทํ ๋ชจ์ ๋ฐ ๊ธฐ๋ฅ์ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๊ณ ์๊ฐํด๋ณด์.์ด๊ฑธ ๊ฐ๊ธฐ ํ๋ ํ๋ ๋ค ๋ง๋ค์ด๋ด๋ ๊ฒ์ ๋ํด์๋ ๊ตฌํํ๋ฉด ์ปดํฌ๋ํธ ํํธํ๋ผ๋ ์ ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ํ๋ค.๊ทธ๋ผ ์ ์ง๋ณด์ ํ ๋, ๊ฐ๊ฐ์ ํํธํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์์ ๊ณ ์ณ์ผํ๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค. โ ์ ์ฐ๋๊ฑด๋ฐ?๋์์ธ ์์คํ
๋ด์์ ์ ๋ง์ ์์ ์์
๋ค์ด ์ผ์ด๋..
์ฐธ๊ณ ์ฌ์ดํธ • ๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์ - Custom Hook โ๏ธ Custom Hook ์์ ๊ฒ์๊ธ์์ ๋ค์ํ Hook์ ์ฌ์ฉํด์๋ค. React์๋ useState, useContext, useEffect์ ๊ฐ์ ์ฌ๋ฌ ๋ด์ฅ Hook์ด ํจ๊ป ์ ๊ณต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ฌ์ฉ์๊ฐ ์จ๋ผ์ธ ์ํ์ธ์ง ์ถ์ ํ๊ฑฐ๋ ์ฑํ
๋ฐฉ์ ์ฐ๊ฒฐํ๋ ๋ฑ ์ข ๋ ๊ตฌ์ฒด์ ์ธ ๋ชฉ์ ์ ์ํด Hook์ด ์์์ผ๋ฉด ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. React์์ ์ด๋ฌํ Hook์ ๋ชจ๋ ์ง์ํ ์ ์๋ค. ๊ทธ๋์ ์ดํ๋ฆฌ์ผ์ด์
์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์ง์ ์์ ๋ง์ Hook์ ๋ง๋ค ์ ์๋ค. ๐ง ์ ์ฌ์ฉํ ๊น? ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค. ๋ด์ฅ Hook์ ์ฌ์ฉํ ์ ์๋ค. ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค. ๐ก ๊ตฌ์ฑ์์ ๊ฐ ๋
ผ๋ฆฌ ๊ณต์ ๋คํธ์ํฌ์ ํฌ๊ฒ ์์กดํ๋ ์ฑ์ด ์๋ค๊ณ ์์ํด๋ณด์. ..
์ฐธ๊ณ ์ฌ์ดํธ • ๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์ - useContext ๐ useContext useContext๋ ์ปดํฌ๋ํธ์ Context๋ฅผ ์ฝ๊ณ ๊ตฌ๋
ํ๊ฒ ํด์ฃผ๋ ๋ฆฌ์กํธ Hook์ด๋ค. ๋ฆฌ์กํธ์์ ๋ฐ์ดํฐ๊ฐ์ ํ์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๊ธฐ ์ํด ์ปดํฌ๋ํธ ํธ์ถ ์, ๋ฐ์ดํฐ prop์ ๋ด๊ณ , ํด๋น props๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ค. useContext๋ ํด๋น ๊ณผ์ ์ ์๊ด์์ด useContext๋ก ๊ฐ์ผ ์ปดํฌ๋ํธ๋ค์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ ์ ์๋๋ก ๋์์ค๋ค. ๋น์ทํ ๊ธฐ๋ฅ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ recoil์ด ์๋ค. ๐ฆ Parameter useContext ์ปจํ
์คํธ๋ฅผ ์ฝ๊ณ ๊ตฌ๋
ํ๋ ค๋ฉด ์ปดํฌ๋ํธ ์ต์์์์ ํธ์ถํด์ผํ๋ค. const value = useContext(SomeContext); • SomeContext: ํด๋น ์ปจํ
์คํธ๋ cr..
์ฐธ๊ณ ์ฌ์ดํธ • ๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์ - useCallback • ๋ณ์ฝ๋ฉ๋์ youtube - useCallback ๊ฐ์ ๐ชฃ useCallback useCallback์ ์ฌ๋ ๋๋ง ์ฌ์ด์ ํจ์ ์ ์๋ฅผ ์บ์ํ ์ ์๋ React Hook์ด๋ค. ๐ข ์ฐธ์กฐ useCallback ์ฌ๋ ๋๋ง ์ฌ์ด์ ํจ์ ์ ์๋ฅผ ์บ์ํ๋ ค๋ฉด ๊ตฌ์ฑ ์์์ ์ต์์ ์์ค์์ ํธ์ถํ๋ฉด ๋๋ค. const cachedFn = useCallback(fn, [dependencies]); ๐ฆ Parameters • fn: ์บ์ํ๋ ค๋ ํจ์์ด๋ค. ๋ชจ๋ ์ธ์๋ฅผ ์ทจํ๊ณ ๋ชจ๋ ๊ฐ์ ๋ฐํํ ์ ์๋ค. React๋ ์ด๊ธฐ ๋ ๋๋ง ์ค์ ํจ์๋ฅผ ๋ค์ ๋ฐํํ๋ค(ํธ์ถX). ๋ค์ ๋ ๋๋ง์์ dependencies๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ๋์ผํ ๊ธฐ๋ฅ์ ๋ค์ ์ ๊ณตํ๋ฉฐ, ๊ทธ๋ ์ง ์๋ค๋ฉด ..