๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

• kyounghwan๋‹˜์˜ GitHub.io Guide | ๊ธฐ์–ต๋ณด๋‹ค ๊ธฐ๋ก์„Guide ๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” vue.js ์— TypeScript(TS)๋ฅผ ์ ์šฉํ•˜์ž๋Š” ์ƒ๊ฐ์œผ๋กœ TS๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๊ธฐ๋กํ•œ ๋‚ด์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ์ค€๋น„ vue create๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  vue.js ์ฝ”๋“œ ์œ„์— tskyounghwan01.github.io  โš ๏ธ any ํƒ€์ž…์€ ์–ด๋– ํ•œ ๊ฐ’๋“ค์ด๋“  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์„ ์–ธ๋˜๋Š”๋ฐ, any๋ฅผ ์ค‘๊ตฌ๋‚œ๋ฐฉ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, VanillaJS์™€ ๋‹ค๋ฅธ ์ ์ด ์—†์œผ๋ฏ€๋กœ any ํƒ€์ž…์˜ ์„ ์–ธ์€ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ธธ๋“ค์ด์ž. ์ž‘์„ฑ์ž๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ type์„ ์œ„์ฃผ๋กœ ์“ด๋‹ค.๊ทธ ์ด์œ ๋Š”,interface ์ •์˜ ํ›„ ๋งˆ์šฐ์Šค๋ฅผ ํ˜ธ๋ฒ„ํ•˜์—ฌ ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํƒ€์ž… ์ข…๋ฅ˜๋ฅผ ๋ฐ”๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ˜๋ฉด,  t..
์ฐธ๊ณ ์‚ฌ์ดํŠธ• Transtack Query ๊ณต์‹ ๋ฌธ์„œ TanStack Start Overview | TanStack Start React DocsTanStack Start is a full-stack React framework powered by TanStack Router. It provides a full-document SSR, streaming, server functions, bundling, and more using tools like and . It is ready to deploy...tanstack.com• HEROPY.DEV ๋‹˜์˜ ๋ธ”๋กœ๊ทธ TanStack Query(React Query) ํ•ต์‹ฌ ์ •๋ฆฌTanStack Query๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ฐ์ดํ„ฐ ์บ์‹ฑ, ์บ์‹œ ์ œ์–ด ๋“ฑ ๋ฐ์ด..
๐Ÿ“š Merge ๋ž€ ๋จธ์ง€,,?Merge๋ž€  ํ•œ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์™€ ํ†ตํ•ฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.Merge ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  Repository๋ฅผ ๊ด€๋ฆฌํ•ด๋ณด์ž.git merge feature-branch ๐Ÿ’ฌ  Merge  (defualt)์ผ๋ฐ˜์ ์ธ Merge๋Š” ๋‘ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ชจ๋‘ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด Merge Commit์„ ์ƒ์„ฑํ•œ๋‹ค. ํŠน์ง•์œผ๋กœ๋Š”โœ… ๋ชจ๋“  ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ณด์กด๋œ๋‹ค.โœ… Merge ์ปค๋ฐ‹์ด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค.โœ… ๋ธŒ๋žœ์น˜์˜ ์ž‘์—… ๋‚ด์—ญ์„ ๊ทธ๋Œ€๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. ๐ŸŒฟ  Squash Merge (์••์ถ• ๋ณ‘ํ•ฉ)์—ฌ๋Ÿฌ ์ปค๋ฐ‹์„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ์••์ถ•ํ•˜์—ฌ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ๋ช‡ ๊ฐœ์˜ ์ปค๋ฐ‹์„ ์ž‘์„ฑํ•˜์—ฌ๋„, ๋จธ์ง€ ๋˜๋Š” ๋ธŒ๋žœ์น˜์—๋Š” ํ•˜๋‚˜์˜ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋งŒ ๋‚จ๊ฒŒ ๋˜์–ด ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•œ๋‹ค.feature ๋ธŒ๋žœ์น˜์˜..
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` ๋“ฑ์˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ธฐ..
์ฐธ๊ณ  ์‚ฌ์ดํŠธ• Turborepo ๊ณต์‹ ๋ฌธ์„œ TurboTurbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.turbo.build  ์ž‘์„ฑ์ž์˜ Next.js ํ”„๋กœ์ ํŠธ์— ๋ชจ๋…ธ๋ ˆํฌ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ชจ๋…ธ๋ ˆํฌ๋ฅผ ๋”์šฑ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•˜์—ฌ Vercel ์—์„œ ์ธ์ˆ˜ํ•œ Turborepo๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ์™œ Turborepo๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž. ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์€ ์•„์ง ๋ชจ๋…ธ๋ ˆํฌ ๊ฒฝํ—˜์ด ์—†๋Š” ๊ฐœ๋ฐœ์ž๋กœ, ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด์„œ ํ„ฐ๋ณด๋ ˆํฌ๊ฐ€ ์–ด๋– ํ•œ์ง€์— ๋Œ€ํ•ด ์ฃผ๊ด€์ ์ธ ์ƒ๊ฐ์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋”ฐ๋”ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์‹ ๋‹ค๋ฉด ์ •์ •ํ•˜๋ฉฐ ๋ฐฐ์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿš€ Tur..
ma.caron_g
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก