react
14 posts
React Redux ์ ์šฉํ•˜๊ธฐ

React Redux๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ–ˆ๋Š”์ง€, Context API์™€ React Redux๋Š” ๋ฌด์—‡์ด ๋‹ค๋ฅธ์ง€ ์ •๋ฆฌํ•ด๋ดค๋‹ค. React Redux๋ฅผ ์ ์šฉํ•  ๋•Œ Redux Toolkit์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ–ˆ๋‹ค. React Redux ๊ณต์‹๋ฌธ์„œ์—์„œ๋„ Redux Toolkit์„ ์‚ฌ์šฉํ•˜๊ธธ ๊ถŒ์žฅํ•˜๋ฉฐ, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ์ž‘์„ฑํ•ด์•ผํ•  ์ฝ”๋“œ๊ฐ€ ์ค„์–ด๋“ค์–ด ํŽธํ–ˆ๋‹ค. React Redux Redux๋Š” action์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŒจํ„ด์ด๋ฉฐ, React Redux๋Š” Redux๋ฅผ React์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. React Redux๋Š” Redux store์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  action์„ dispatchํ•ด์„œ store์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค. React Redux๋Š” ํ˜„์žฌ React์—์„œ ์ง€์ •ํ•œ ๊ณต์‹ Redux UI ๋ฐ”์ธ๋”ฉ์ด๋‹ค. ๋งŒ์•ฝ React๋ฅผ ์‚ฌ์šฉ์ค‘์ด๋ฉฐ UI ๋ฐ”์ธ๋”ฉ์— Redux ๊ฐœ๋…์„ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด React Redux ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ถŒ์žฅ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. React์—์„œ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ๊ณผ โ€ฆ

November 23, 2023
react
Context API์™€ useReducer๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ „์—ญ์ ์œผ๋กœ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

React์—์„œ props drilling์„ ํ”ผํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค. React๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋งŒํผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ๋‹ค. ๊ฐ€์žฅ ๋Œ€์ค‘์ ์ธ React Redux ๋ถ€ํ„ฐ Recoil, Justand, Jotai, MobX ๋“ฑ๋“ฑ. ํ•˜์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— React ์ž์ฒด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ค„ ์•Œ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ React ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ React ์ž์ฒด ๊ธฐ๋Šฅ์ธ Context API๋ฅผ ์‚ฌ์šฉํ•ด ์ „์—ญ์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ๋‹ค. Context API ๋ž€? Context๋Š” props๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ ๋„ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ์ „์ฒด์— ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์ด๋‹ค. props๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ props drilling์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ธ ๋™์‹œ์— ์ƒํƒœ๊ฐ€ ์ˆจ๊ฒจ์ ธ ์ฝ”๋“œ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค๋‹ค๋Š” ๋‹จ์ ์„ ์˜๋ฏธํ•œ๋‹ค. props๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ โ€ฆ

November 15, 2023
react
๋ฆฌ์•กํŠธ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ ์ตœ์ ํ™”

React ํ”„๋กœ์ ํŠธ์— ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์ด์ฆˆ ์ƒ๊ฐ ์•ˆํ•˜๊ณ  ๋„ฃ์—ˆ๋”๋‹ˆ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ตœ์ ํ™”ํ–ˆ๋‹ค. ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ ์ค„์ด๊ธฐ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ž‘๋‹ค๋ฉด ํ™”์งˆ์ด ์ €ํ•˜๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฏธ์ง€๋Š” ์–ด๋Š ์ •๋„ ํฌ๊ธฐ์—ฌ์•ผ ์ ๋‹นํ• ๊นŒ? ๋‚˜๋Š” ๋‹ค์Œ ๋ง์— ์„ค๋“๋˜์–ด ์ด๋ฏธ์ง€๊ฐ€ ํ™”๋ฉด์—์„œ ์ฐจ์ง€ํ•˜๋Š” ํ”ฝ์…€์˜ ๋‘ ๋ฐฐ ์ •๋„ ํฌ๊ธฐ๋กœ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ ˆํ–ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ์‚ฌ์ด์ฆˆ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ‹€๋ฆฐ ๋ง์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์š”์ฆ˜ ์‚ฌ์šฉ๋˜๋Š” ๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด๋Š” ๊ฐ™์€ ๊ณต๊ฐ„(ํ”ฝ์…€)์— ๋” ๋งŽ์€ ํ”ฝ์…€์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋„ˆ๋น„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๋ฐฐ ์ •๋„ ํฐ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค. - ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฐ€์ด๋“œ, ์œ ๋™๊ทผ ์ง€์Œ ํ™”๋ฉด์—์„œ ์ตœ๋Œ€ ๋„ˆ๋น„ 384px, ๋†’์ด 240px๋กœ ํ‘œ์‹œ๋˜๋Š” ์ด๋ฏธ์ง€๋ผ๋ฉด ์›๋ณธ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ๋„ˆ๋น„ 768px, ๋†’์ด 480px ์ •๋„ ๋˜๋„๋ก ์ค„์˜€๋‹ค. ์ด๋ฏธ์ง€ ํ™”์งˆ์ด ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ๋ผโ€ฆ

October 30, 2023
react
lazy์™€ Suspense๋กœ ์ฝ”๋“œ ๋ถ„ํ• ํ•˜๊ณ  ๋กœ๋“œ ์ง€์—ฐํ•˜๊ธฐ

React ํ”„๋กœ์ ํŠธ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ์ฝ”๋“œ ๋ถ„ํ• ๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๐Ÿ’ก ์ฝ”๋“œ ๋ถ„ํ• (Code splitting)์ด๋ž€? ํ•˜๋‚˜์˜ ๋นŒ๋“œ ํŒŒ์ผ์„ ํ•œ ๋ฒˆ์— ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋Œ€์‹  ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋ถ„ํ• ํ•ด ํ•„์š”ํ•  ๋•Œ๋งŒ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ดˆ๊ธฐ ๋ฆฌ์†Œ์Šค ๋‹ค์šด๋กœ๋“œ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ๋˜๋Š” ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ ์—†์ด ์ ์ ˆํ•œ ์‚ฌ์ด์ฆˆ์˜ ์ฝ”๋“œ๊ฐ€ ์ ์ ˆํ•œ ํƒ€์ด๋ฐ์— ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๐Ÿ’ก ์ง€์—ฐ ๋กœ๋”ฉ(Lazy loading)์ด๋ž€? ์ฒ˜์Œ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋  ๋•Œ๊ฐ€ ์•„๋‹Œ, ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์ค‘ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•ด์ง€๋Š” ์‹œ์ ์— ๋ถ„ํ• ๋˜์–ด ์žˆ๋˜ ์ฝ”๋“œ๊ฐ€ ๋กœ๋“œ๋˜์–ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ์— ํ•œ ๋ฒˆ์— ๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ์ง€์—ฐ๋˜์—ˆ๋‹ค๊ฐ€ ๋กœ๋“œ๋˜๋ฏ€๋กœ ์ง€์—ฐ ๋กœ๋”ฉ์ด๋‹ค. ๋”ฐ๋กœ ์ฝ”๋“œ ๋ถ„ํ• ํ•˜์ง€ ์•Š์œผ๋ฉด ํ†ตํ•ฉ๋œ ํ•˜๋‚˜์˜ ๋นŒ๋“œ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด ์ฒ˜์Œ ํŽ˜์ด์ง€์— ์ ‘์†ํ•  ๋•Œ ๊ทธ ํ†ตํ•ฉ๋œ ๋นŒ๋“œ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์žฅ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๊นŒ์ง€๋„ ๋กœ๋“œํ•˜๊ฒŒ ๋œ๋‹ค. ๋‚ด ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋“ , ๋กœ๊ทธ์ธโ€ฆ

October 29, 2023
react
Tailwind CSS @apply ์ง€์‹œ๋ฌธ ์ตœ์†Œํ™”ํ•˜๊ธฐ

[๋ฒˆ์—ญ] Tailwind CSS์—์„œ ํ˜ผ๋ž€์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ 5๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ฝ์œผ๋ฉด์„œ Tailwind CSS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ง€์‹œ๋ฌธ์„ ๋‚จ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. Tailwind CSS๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ํ”„๋กœ์ ํŠธ์˜ ์ง€์‹œ๋ฌธ์„ ์ค„์ด๋ฉด์„œ ๋Š๋‚€ ๊ฒƒ์„ ์ ์–ด๋ณด๋ ค ํ•œ๋‹ค. Bad Practice Tailwind CSS๋กœ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ๋„ˆ๋ฌด ๊ธธ์–ด์ ธ ์ง€์ €๋ถ„ํ•ด ๋ณด์ผ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ ์™€ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด CSS ํŒŒ์ผ์— ํด๋ž˜์Šค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ๊ธธ๊ณ  ์ง€์ €๋ถ„ํ•˜๊ฒŒ ๋Š˜์–ด์ง„ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋„ˆ๋ฌด ๊ธธ์–ด ๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์„, ์™€ ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฒ„ํŠผ์˜ ๋ชจ์–‘๊ณผ ๋ฒ„ํŠผ์˜ ์ƒ‰์— ๋Œ€ํ•œ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆ  ์ •์˜ ํ•ด์ฃผ๋ฉด, ์ด๋ ‡๊ฒŒ ์•Œ์•„๋ณด๊ธฐ๋„ ์‰ฝ๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์™€! ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ  ๋งŒ๋“ค์–ด ๋‘” ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋„ˆ๋ฌด ์ข‹๋‹ค! ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Tailwind CSS์˜ ์Šคํƒ€์ผ์„ ์•Œ์•„๋ณด๊ธฐ ํž˜๋“  ๋‹จ์ ๋„ ๋ณด์™„๋ผ! ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ์—ˆ๋‹ค. ์ถ”์ƒํ™”๋ฅผ ์œ„โ€ฆ

October 28, 2023
react
๋ฆฌ์•กํŠธ ๋ Œ๋”๋งย ์ตœ์ ํ™”ํ•˜๊ธฐ

๋ฌดํ•œ ๋ Œ๋”๋งํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •๋ง ํ•„์š”ํ•œ ๋•Œ์—๋งŒ ๋ฆฌ๋ Œ๋”๋งํ•˜๋„๋ก ์ตœ์ ํ™”ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋ฌดํ•œ ๋ Œ๋”๋ง์„ ํƒˆ์ถœํ•œ ํ›„, ๊ณผ ๋ฅผ ์ด์šฉํ•ด ๋ฆฌ๋ Œ๋”๋ง์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌดํ•œ ๋ Œ๋”๋ง ํƒˆ์ถœํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ๋Š”ย ๊ฐ„๋‹จํ•œย ํˆฌ๋‘๋ฆฌ์ŠคํŠธย ์•ฑ์œผ๋กœย ์ด๋ ‡๊ฒŒย ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œย ์„œ๋ฒ„์—ย APIย ์š”์ฒญ์„ย ํ•ด์„œย ํˆฌ๋‘๋ฆฌ์ŠคํŠธย ๊ด€๋ จย ๋ฐ์ดํ„ฐ๋ฅผย ๋‹ค๋ฃจ๊ณ ย ์žˆ์Šต๋‹ˆ๋‹ค. TodoListย ์ปดํฌ๋„ŒํŠธ์—์„œย ํˆฌ๋‘ย ๋ฆฌ์ŠคํŠธย ๋ฐ์ดํ„ฐ๋ฅผย ๋ฐ›์•„์™€ย ํ™”๋ฉด์—ย ๋ณด์—ฌ์ค˜์•ผย ํ•˜๋Š”๋ฐย ๊ทธ๋Ÿฌ๋ฉดย APIย ์š”์ฒญ์ดย ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ํˆฌ๋‘ย ๋ฆฌ์ŠคํŠธ๋ฅผย ๊ฐ€์žฅย ์ตœ์‹ ย ์ƒํƒœ๋กœย ์œ ์ง€ํ•˜๋Š”ย ๊ฒƒ์ดย ๊ฐ€์žฅย ์ข‹์ง€๋งŒย ๊ทธ๋Ÿฌ๋ฉดย APIย ์š”์ฒญ์ดย ์žฆ์•„์ง€๊ณ ย ์ปดํฌ๋„ŒํŠธ์˜ย ๋ฆฌ๋ Œ๋”๋ง๋„ย ์žฆ์•„์งˆ์ˆ˜ย ์žˆ์–ดย ์„ฑ๋Šฅ์ดย ํฌ๊ฒŒย ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œย APIย ์š”์ฒญย ์ž์ฒด๋ฅผย ์ตœ์ ํ™”ํ•ด์•ผย ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ ํ™”ย ์ „์˜ย TodoListย ์ปดํฌ๋„ŒํŠธ๋Š”ย ์ด๋Ÿฐย ์‹์œผ๋กœย ๋ฐ์ดํ„ฐ๋ฅผย ๋ฐ›์•„์˜ค๊ณ ย ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. ๋ฌดํ•œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์ตœ์•…์˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์•ˆ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋ฏ€๋กœ TodoList ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜๊ณ  ๊ทธ๋Ÿฌ๋ฉด ํ•จ์ˆ˜๊ฐ€ ๋˜ ๋‹ค์‹œ ์‹คํ–‰๋˜์–ด ๋ฌดํ•œ์œผ๋กœ ์ฆโ€ฆ

May 24, 2023
react
๋ฆฌ์•กํŠธ v18.0

React 18์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณ€ํ™”๋Š” Concurrency, ๋™์‹œ์„ฑ์ž…๋‹ˆ๋‹ค. ๋™์‹œ์„ฑ์ด ์ ์šฉ๋˜๊ธฐ ์ „ ๋™๊ธฐ์‹ ๋ Œ๋”๋ง์˜ ๊ฒฝ์šฐ, ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ Œ๋”๋ง์„ ์‹œ์ž‘ํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ํ™”๋ฉด์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ์ค‘๋‹จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋™์‹œ์„ฑ์ด ์ ์šฉ๋œ ํ›„ ๋ Œ๋”๋ง์€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (React 18๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด๋„ createRoot ํ•จ์ˆ˜ ๋“ฑ ๋™์‹œ์„ฑ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™๊ธฐ์ ์œผ๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.) ๋™์‹œ ๋ Œ๋”๋ง์—์„œ ๋ฆฌ์•กํŠธ๋Š” ์—…๋ฐ์ดํŠธ ๋ Œ๋”๋ง์„ ์‹œ์ž‘ํ•˜๊ณ , ์ค‘๊ฐ„์— ์ผ์‹œ์ค‘์ง€ํ•œ ๋‹ค์Œ ๋‚˜์ค‘์— ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์ง„ํ–‰ ์ค‘์ธ ๋ Œ๋”๋ง์„ ์™„์ „ํžˆ ํฌ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ Œ๋”๋ง์ด ์ค‘๋‹จ๋˜๋”๋ผ๋„ UI๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ๋ณด์ผ ๊ฒƒ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด React๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ƒˆ๋กœ์šด ํ™”๋ฉด์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๊ฒƒ์€ UI๊ฐ€ ํฐ ๋ Œ๋”๋ง ์ž‘์—…์˜ ์ค‘๊ฐ„์— ์žˆ๋”๋ผ๋„ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์ฆ‰์‹œ ์‘๋‹ตํ•˜์—ฌ ์œ ๋™์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.โ€ฆ

April 06, 2023
react
index.d.ts ํŒŒ์ผ์˜ ์ •์ฒด๋Š”?

React ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์•Œ์ˆ˜ ์—†๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฒ€์ƒ‰ํ•ด๋„ ๋ฌด์Šจ ์—๋Ÿฌ์ธ์ง€ ์•Œ ์ˆ˜ ์—†์–ด์„œ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด๋ ค๊ณ  ctrl ๋กœ ํŒŒ๊ณ  ๋“ค์–ด๊ฐ”๋Š”๋ฐ, d.ts ํŒŒ์ผ๋งŒ ๋‚˜์˜ค๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ๋ณด์—ฌ์ค„๋ฟ ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ๋Š” ์•ˆ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ, ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ค‘ ์–ด๋”˜๊ฐ€์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์กด์žฌํ–ˆ๋‹ค. ctrl ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์—ˆ์„ ๋ฟ ์กด์žฌํ–ˆ๋‹ค. ๊ทธ๋Ÿผ d.ts ํŒŒ์ผ์€ ๋ญ์ง€? ์™œ ์กด์žฌํ•˜๋Š”์ง€ ์•Œ์•„๋ดค๋‹ค. TypeScript์˜ d.ts: ์„ ์–ธ ํŒŒ์ผ ๋‚ด๊ฐ€ ๋“ค์–ด๊ฐ”๋˜ ํŒŒ์ผ์€ TypeScript ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ์„ ์–ธ ํŒŒ์ผ์ด๋‹ค. d๋Š” declaration, ์„ ์–ธ์„ ์˜๋ฏธํ•œ๋‹ค. ์„ ์–ธ ํŒŒ์ผ์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ํƒ€์ž…์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ ์–ธํ•ด๋†“์€ ํŒŒ์ผ์ด๋‹ค. ๋ง๊ทธ๋Œ€๋กœ ์„ ์–ธ ํŒŒ์ผ์ด์–ด์„œ ํŒŒ์ผ ์•ˆ์— ์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์Šจ ํƒ€์ž…์ธ์ง€ ์„ ์–ธํ•ด๋†“์€ ๋‚ด์šฉ๋ฐ–์— ์—†๋‹ค. ์ง์ ‘ ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ์ˆ˜๋งŽ์€ declare์™€ ์ธํ„ฐํŽ˜์ด์Šค๋“ค์ด ๋ฐ˜๊ฒจ์ค€๋‹ค. ์™œ ์žˆ์ง€? ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌโ€ฆ

July 13, 2022
react
typescript
React๋กœ Carousel ๋งŒ๋“ค๊ธฐ

React๋กœ ์บ๋Ÿฌ์…€์„ ๋งŒ๋“ค์–ด๋ณด์ž. ์บ๋Ÿฌ์…€์ด ์›€์ง์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฑด ์–ด๋ ต์ง€ ์•Š์•˜๋Š”๋ฐ CSS๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‹œ๊ฐ„์„ ๋งŽ์ด ๋นผ์•—๊ฒจ์„œ CSS๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๋ช…ํ•˜๋ ค ํ•œ๋‹ค. Carousel์ด๋ž€? ์ง์—ญํ•˜์ž๋ฉด โ€˜ํšŒ์ „๋ชฉ๋งˆโ€™๋กœ, ์‚ฌ์ง„๋“ค์ด ์ˆœํ™˜ํ•˜๋ฉฐ ๋Œ์•„๊ฐ€๋Š” ์Šฌ๋ผ์ด๋“œ ์‡ผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ฐฑ๋ฌธ์ด ๋ถˆ์—ฌ์ผ๊ฒฌ. ์• ํ”Œ ํ™ˆํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€ ๋ณด์ž. ์• ํ”Œ ํ™ˆํŽ˜์ด์ง€์˜ Carousel ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์ง„์ด ๊ฐ€๋กœ๋กœ ๋‚˜์—ด ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ด๋™ ๊ฐ€๋Šฅ ํ•˜๋‹ค๋ฉด ๋ณดํ†ต ์บ๋Ÿฌ์…€์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ๋‚ด๊ฐ€ ๋งŒ๋“ค Carousel ๋‹ค์–‘ํ•œ ์บ๋Ÿฌ์…€๋“ค์ด ์žˆ์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ ๋ชจ์–‘์˜ ์บ๋Ÿฌ์…€์„ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ๋‚ด๊ฐ€ ๋งŒ๋“  Carousel ๋‚ด๊ฐ€ ๋งŒ๋“ค ์บ๋Ÿฌ์…€์˜ ํŠน์ง•์€ ์ด๋ ‡๋‹ค. ์‚ฌ์ง„์„ ํ•˜๋‚˜์”ฉ๋งŒ ๋ณด์—ฌ์ฃผ๊ณ  ์–‘ ์˜†์œผ๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Œ ์•„๋ž˜์— ์ ์„ ํ†ตํ•ด ๋ช‡๋ฒˆ ์งธ ์‚ฌ์ง„์„ ๋ณด๊ณ  ์žˆ๋Š”์ง€ ํ‘œ์‹œ 1. ์ฐฝํ‹€ ๋งŒ๋“ค๊ธฐ ๊ฐ€๋กœ๋กœ ๋‚˜์—ด๋œ ์‚ฌ์ง„ ์—ฌ๋Ÿฌ๊ฐœ ์ค‘ ํ•˜๋‚˜๋งŒ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ผ๋ถ€๋ถ„๋งŒ ๋ณด์—ฌ์ฃผ๋Š” ์ฐฝํ‹€์„ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค. ์ผ๋‹จ ๊ท€์—ฌ์šด ์ฝ”๋ž„์ƒ‰ ๋„ค๋ชจ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค. ์‚ฌ์ง„๋“ค์„ ๋„ฃ์—ˆ์„ ๋•Œ ์ฐฝํ‹€์—์„œ ๋„˜์น˜์ง€ ์•Šโ€ฆ

May 04, 2022
react
Promise์™€ async/await

๋น„๋™๊ธฐ ์ž‘์—…์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ฝœ๋ฐฑ ์ง€์˜ฅ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ฝœ๋ฐฑ ์ง€์˜ฅ์— ๋น ์ ธ ์ฝ”๋“œ์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์ด ๋„ˆ๋ฌด ๊นŠ์–ด์กŒ๋‹ค๋ฉด ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง€๊ณ  ๋‚˜์ค‘์— ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๋„ ํž˜๋“ค์–ด์ง„๋‹ค. ์ด๋Ÿฐ ์ฝœ๋ฐฑ ์ง€์˜ฅ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ด ๊ฐœ๋…๋“ค์„ ์ด์šฉํ•ด์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋™๊ธฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. Promise Generator async/await ์™€ ๋Š” ES6์—์„œ, ๋Š” ES2017์—์„œ ๋„์ž…๋๋‹ค. ์ด ์ค‘์—์„œ ๊ฒฐ์ด ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” Promise์™€ async/await๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค. Generator๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด, yield ํ‚ค์›Œ๋“œ์™€ next ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Promise Promise ๊ฐ์ฒด๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ๋ ์ง€์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. Promise๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค. : ์ดํ–‰ํ•˜์ง€๋„, ๊ฑฐ๋ถ€ํ•˜์ง€๋„ ์•Š์€ ์ดˆ๊ธฐ ์ƒํƒœ : ์—ฐ์‚ฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋จ : ์—ฐ์‚ฐ์ด ์‹คํŒจํ•จ ๋Œ€๊ธฐ ์ƒโ€ฆ

April 18, 2022
react
gh-pages๋กœ ๋‚ด React ์›น์‚ฌ์ดํŠธ ๋ฐฐํฌํ•˜๊ธฐ

GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ด ๊ธ€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ์ฝ”๋“œ๋กœ ์›น ๋ฐฐํฌํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค React๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค GitHub Pages ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ, GitHub Pages๋Š” ๋ญ˜๊นŒ์š”? GitHub Pages๋Š” ๋‹น์‹ ์˜ GitHub repository์˜ ์ฝ”๋“œ๋ฅผ hostํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. GitHub repository์— ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ๋ช‡๊ฐ€์ง€ ์„ค์ •๋งŒ ํ•ด์ฃผ๋ฉด ๋ฌด๋ฃŒ๋กœ ์›น ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์›น ๋ฐฐํฌ๋ฅผ ์ง์ ‘ ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋ฃŒ ์„œ๋ฒ„ ํ˜น์€ ๋‚ฎ์€ ์„ฑ๋Šฅ์˜ ๋ฌด๋ฃŒ ์„œ๋ฒ„ ๊ตฌํ•˜๊ธฐ (๋น„์šฉ ํ˜น์€ ์œ ์ง€๋ณด์ˆ˜ ๋ฌธ์ œ) ๊ทธ ์„œ๋ฒ„์— ์›น ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ธํŒ…์„ ํ•ด์ฃผ๊ธฐ (๋ณต์žกํ•จ) ์ง์ ‘ ์›น ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ ๊ตณ์ด ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ๋“ค์€ GitHub Pages๋ฅผ ์“ฐ๋Š” ๊ฒŒ ํŽธํ•ฉ๋‹ˆ๋‹ค. GitHub Pages ๋“ค์–ด๊ฐ€๋ณด๊ธฐ ๊ทธ๋Ÿผ ์–ด๋””์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค. ์„ค์ •ํ•˜๊ณ  ์‹ถโ€ฆ

March 11, 2022
react
onAnimationEnd๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋๋‚ฌ์„ ๋•Œ ํŠน์ • ํ•จ์ˆ˜ ์‹คํ–‰ํ•˜๊ธฐ

๊ฐ„๋‹จํ•œ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๋˜ ์ค‘ ์œ ์ €๊ฐ€ ๋นˆ ๋‚ด์šฉ์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋นˆ ๋‚ด์šฉ์„ ์ž…๋ ฅํ–ˆ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ํŒ์—…์„ ๋„์› ๋‹ค๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํŒ์—… ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์Šฅ ๋‚˜ํƒ€๋‚˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๊นŒ์ง€๋Š” ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ๋‹ค์‹œ ์Šฅ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๋Š”๊ฒŒ ์–ด๋ ค์› ๋‹ค. setTimeout ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ 2์ดˆ ํ›„์— ํŒ์—… ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ๋ผ์ง€๋„๋ก ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ณ  1์ดˆ ๋™์•ˆ fade in ์• ๋‹ˆ๋ฉ”์ด์…˜์„, 1์ดˆ ๋™์•ˆ fade out ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ–ˆ์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ํƒ€์ด๋ฐ๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹œ์ž‘ํ•˜๋Š” ํƒ€์ด๋ฐ์ด ์ •ํ™•ํ•˜๊ฒŒ ๋งž์•„๋–จ์–ด์ง€์ง€ ์•Š์•„ ๋งค์šฐ ๊ฑฐ์Šฌ๋ฆฌ๊ฒŒ ๋™์ž‘ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ React unmount animation๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์“ฐ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. animation, transition ๊ด€๋ จ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒํƒœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” state๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์›ฌ๋งŒํ•˜๋ฉด ํŒจํ‚ค์ง€๋Š” ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ณ  ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋ณดํ†ต unmountํ•˜๋Š” ์‹œ์ ์ด ํŠน์ • ํ–‰๋™์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๋‚˜๋Š” โ€ฆ

March 01, 2022
react
ubuntu์—์„œ nginx๋ฅผ ์ด์šฉํ•ด์„œ react ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ

OCI์—์„œ ubuntu ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  nginx๋ฅผ ์ด์šฉํ•ด์„œ react ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ–ˆ๋‹ค. OCI์— ๋ฌด๋ฃŒ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‚จ์•„์žˆ์–ด AWS๊ฐ€ ์•„๋‹Œ OCI๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ OCI์™€ AWS๊ฐ€ ์ข€ ๋‹ฌ๋ผ์„œ ํ—ท๊ฐˆ๋ ธ๋‹ค. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ณ  ๊ธฐ๋ณธ์ ์ธ ์„ค์ •ํ•˜๊ธฐ ๋จผ์ € OCI์— ubuntu ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค. 1. VCN ์ƒ์„ฑํ•˜๊ณ  ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์›น ํ˜ธ์ŠคํŒ…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“  ๋’ค ์›น๊ณผ ๊ด€๋ จ๋œ ํฌํŠธ๋ฅผ ๊ผญ ์—ด์–ด์ค˜์•ผ ํ•œ๋‹ค. http๋กœ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด 80์„, https๋กœ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด 443์„ ์—ด์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ OCI์˜ VCN(๊ฐ€์ƒ ํด๋ผ์šฐ๋“œ ๋„คํŠธ์›Œํฌ) ๋ฉ”๋‰ด์—์„œ VCN์„ ์ƒ์„ฑํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด VCN ๋งˆ๋ฒ•์‚ฌ๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋งŒ๋“ค์–ด์ง„ VCN์˜ ๊ณต์šฉ ์„œ๋ธŒ๋„ท์— ๋“ค์–ด๊ฐ€ ์ˆ˜์‹  ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‚œ ์•„๋ž˜ ์ฒดํฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ 80, 443, 3000 ์„ธ๊ฐ€์ง€ ํฌํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค. ์ธ์Šคํ„ด์Šค์— ๋งŒ๋“ค์–ด๋‘” VCN์„ ์ ์šฉํ•œ๋‹ค. ๐Ÿ”ฅ VNIC๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์„ ๋•Œ ์ด๋ฏธ VNIC๊ฐ€ ์กด์žฌํ•˜๋Š” โ€ฆ

January 29, 2022
react
oci
React์˜ props์™€ state

React์˜ props์™€ state, ๊ทธ๋ฆฌ๊ณ  ๋‘˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. props props (properties) ์ปดํฌ๋„ŒํŠธ ์†์„ฑ์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ props ๊ฐ’์€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์„ค์ •ํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์ž์‹ ์€ ํ•ด๋‹น props๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. props ์‚ฌ์šฉํ•˜๊ธฐ : ํ•ด๋‹น ์†์„ฑ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•œ ๊ฐ’ : ์ปดํฌ๋„ŒํŠธ ํƒœ๊ทธ ์‚ฌ์ด์˜ ๋‚ด์šฉ : props ๊ธฐ๋ณธ๊ฐ’ ์„ค์ • : props ํƒ€์ž… ์„ค์ • ๋ถ™์ด๋ฉด ํ•„์ˆ˜๋กœ ์ง€์ •ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฐ’ ์ปดํฌ๋„ŒํŠธ App์—์„œ MyCom ์ปดํฌ๋„ŒํŠธ์˜ props๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ–ˆ์„ ๋•Œ, MyCom ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. MyCom ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. props ๊ธฐ๋ณธ๊ฐ’๊ณผ props ํƒ€์ž…์„ ์„ค์ •ํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ, ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•˜๋‹ค. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋Š” props๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„์˜ค๊ณ , ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋Š” ํ•จ์ˆ˜์—์„œ ๋ฅผ ํ†ตํ•ด ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. state state ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์ฒดโ€ฆ

December 18, 2021
react