๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

React

(22)
[ React 18+ ] RSC(React Server Componen) ํŒŒํ—ค์น˜๊ธฐ. RSC๋Š” React Server Components์˜ ์•ฝ์ž๋กœ, React18 ๋ฒ„์ „๋ถ€ํ„ฐ ๋“ฑ์žฅํ•œ ๊ฐœ๋…์ด๋‹ค.์„œ๋ฒ„์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ธฐ๋Šฅ์ด๋‹ค. RSC๋Š” React์˜ ์ž์ฒด์ ์ธ ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ Next.js๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, RSC๋Š” ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Node.js๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ Next.js๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Express.js ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTP ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ , ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ,  Webpack ๋ฒˆ๋“ค๋ง(์„œ๋ฒ„ / ํด๋ผ์ด์–ธํŠธ), ๋ฐ์ดํ„ฐ ํ†ต์‹ , ์„ฑ๋Šฅ ์ตœ์ ํ™”(์บ์‹ฑ) ๋“ฑ์˜ ์ถ”๊ฐ€์ ์ธ ์„ค..
[ Next.js ] Next15์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ. 2024๋…„ 10์›” 21์ผ Next15 ๋ฒ„์ „์ด ๊ณต์‹ ๋ธ”๋กœ๊ทธ์— ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค.๊ณต์‹์ ์œผ๋กœ ์•ˆ์ •ํ™”๋˜์–ด ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.  ์ด๋ฒˆ ๋ฆด๋ฆฌ์ฆˆ๋Š” RC1๊ณผ RC2์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์•ˆ์ •์„ฑ์— ์ค‘์ ์„ ๋‘๋ฉด์„œ๋„ ํฅ๋ฏธ๋กœ์šด ์—…๋ฐ์ดํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค๊ณ  ํ•œ๋‹ค.10์›” 24์ผ์— ์—ด๋ฆฐ Next.js Conf๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์‚ฌ์ „ ์‹ ์ฒญํ•˜๊ณ  ๋ชป ๋“ค์–ด์„œ ๋…นํ™”๋ณธ์„ ๋ณด๊ณ  ๋‹ค์Œ์— ๊ทธ ๋‚ด์šฉ์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…๋„ ํ•  ์˜ˆ์ •์ด๋‹ค.  Next15์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.# ์ƒˆ๋กœ์šด ์ž๋™ ์—…๊ทธ๋ ˆ์ด๋“œ CLI ์‚ฌ์šฉnpx @next/codemod@canary upgrade latest# ...๋˜๋Š” ์ˆ˜๋™์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œnpm install next@latest react@rc react-dom@rc      Next.js 15์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ..
React 18 ๋ณ€๊ฒฝ์  ์ •๋ฆฌ ์˜ค๋Š˜์€ React19 release version์ด ๋‚˜์˜ค๊ธฐ ์ „์— React 18์˜ ํฐ ๋ณ€๊ฒฝ์ ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.ํ˜„์žฌ ๊ธฐ์ค€ React ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์€ 18.3.1 ์ด๋‹ค.(2024๋…„ 4์›” 26์ผ) ๊ทธ๋ฆฌ๊ณ  React18์€ 2022๋…„ 3์›” 29์ผ์— ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ๋‹ค.        1. ๋™์‹œ ๋ Œ๋”๋ง(Concurrent Rendering) ๋™์‹œ ๋ Œ๋”๋ง(Concurrent Rendering)์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๋” ์œ ์—ฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์ „ํ†ต์ ์ธ ๋ Œ๋”๋ง ๋ฐฉ์‹์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•œ ๋ฒˆ์— ๋ Œ๋”๋ง๋˜๋ฉด์„œ ์˜ค๋žœ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋ฉฐ UI๊ฐ€ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ๋™์‹œ ๋ Œ๋”๋ง(Concurrent Rendering)์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜..
[ React ] React 19 RC์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž React19 RC(Release Candidate)๋Š” ํ˜„์žฌ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ 2024๋…„ 9์›” ๊ธฐ์ค€์œผ๋กœ ์•„์ง ์ •์‹ ์ถœ์‹œ๋˜์ง€ ์•Š์•˜๋‹ค.  ๊ฐ€์žฅ ์ตœ์‹  ์ •๋ณด(2024๋…„ 4์›” ๊ธฐ์ค€, React Blog ์ฐธ๊ณ )๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด React 19๋Š” ์ด์ „ ๋ฒ„์ „๋“ค๊ณผ ๋น„๊ตํ•ด ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ์„ ์‚ฌํ•ญ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์„ ํฌํ•จํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋œ๋‹ค.  ์„ฑ๋Šฅ ๊ฐœ์„ : ๋ Œ๋”๋ง๊ณผ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ „๋ง.์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ: ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์˜ ์™„์ „ํ•œ ๊ตฌํ˜„์ด ํฌํ•จ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.๋™์‹œ์„ฑ ๊ธฐ๋Šฅ ๊ฐœ์„ : React 18์—์„œ ๋„์ž…๋œ ๋™์‹œ์„ฑ ๊ธฐ๋Šฅ๋“ค์ด ๋”์šฑ ์•ˆ์ •ํ™”๋˜๊ณ  ๋ฐœ์ „๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ.์ƒˆ๋กœ์šด ํ›…: ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ž‘์—…์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค„ ์ƒˆ๋กœ์šด ํ›…๋“ค์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค.ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ง€์› ๊ฐ•ํ™”: ํƒ€์ž…์Šคํฌ๋ฆฝ..
[ React ] React์˜ export์™€ export default ์ฐจ์ด์  ์•Œ์•„๋ณด๊ธฐ SyntaxExport ๊ตฌ๋ฌธ, Import ๊ตฌ๋ฌธ ๊ฐ„๋‹จ ์ •๋ฆฌํ‘œDefaultexport default function Button() {}import Button from './button.js';Namedexport function Button() {}import { Button } from './button.js';  ๋ณดํŽธ์ ์œผ๋กœ ํ•œ ํŒŒ์ผ์—์„œ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋งŒ export ํ•  ๋•Œ default export ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ export ํ•  ๊ฒฝ์šฐ์—” named export ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.       React์—์„œ `export`์™€ `export default`์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.1. export   - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’(ํ•จ์ˆ˜, ๊ฐ์ฒด, ์›์‹œ ๊ฐ’ ๋“ฑ)์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.   - ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ค‘๊ด„ํ˜ธ..
[ React ] Chart UI ๊ตฌํ˜„์„ ์œ„ํ•œ React ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ •๋ฆฌ Chart ๊ด€๋ จ Libraries ์ •๋ฆฌ ๊ธ€  1.Rechartsโญ 20.3k ์˜ ์ธ๊ธฐ ์žˆ๋Š” ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. (์ค‘๊ตญ ํšŒ์‚ฌ)storybook์„ ํ†ตํ•œ UI ๋ช…์„ธ๊ฐ€ ์žˆ๊ณ , ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•œ ์ฐจํŠธ ์ปดํฌ๋„ŒํŠธ ์ง€์›.https://recharts.org/en-US           2.nivoโญ 11.4khttps://nivo.rocks/components/        3.apexchartsโญ 12.5k์˜ˆ์˜๊ณ  ์•„๊ธฐ์ž๊ธฐํ•œ ๋””์ž์ธ, React ์ปดํฌ๋„ŒํŠธ ์˜ˆ์‹œ(class ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜), ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ž์œ ๋„ ๋†’์Œ.https://apexcharts.com/          4.react-chartjs-2โญ 5.9kChart.js ์šฉ React Component ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. Chart.js V3,V4๋ฅผ ์„œํฌํŠธํ•จ. (๊ฐ€์žฅ ์ธ๊ธฐ ๋งŽ..
React์˜ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Zustand์— ๋Œ€ํ•œ ๊ฐ„๋žต ์ •๋ฆฌ๊ธ€. ๋…์ผ์–ด๋กœ "์ƒํƒœ"๋ฅผ ์˜๋ฏธํ•˜๋Š” Zustand๋Š” React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹จ์ˆœํ™”๋œ Flux ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ์ž‘๊ณ  ๋น ๋ฅธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.hook์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„ํŽธํ•œ API๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ตœ์†Œํ•œ์˜ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ง๊ด€์ ์ด๊ณ  ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.     ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ํŠน์ง• 1. ์‹ฌํ”Œํ•œ API:   Zustand์˜ API๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค. ๋ณดํ†ต 1~2๊ฐœ์˜ hook๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ๋กœ `create` ํ•จ์ˆ˜์™€ `useStore` ํ›…์„ ์‚ฌ์šฉํ•œ๋‹ค.2. ์ดˆ๊ฒฝ๋Ÿ‰:   Zustand๋Š” ๊ฒฝ๋Ÿ‰ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ  ๋น ๋ฅด๋‹ค. React Context API ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋น„..
[ Sentry ] F.E์—์„œ Sentry๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น… ํ•˜๊ธฐ. ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ํ”„๋ก ํŠธ์—”๋“œ์˜ ๋””๋ฒ„๊น… ํˆด๋กœ ์„ผํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์„œ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์„ผํŠธ๋ฆฌ๋Š” ์›น, ๋ชจ๋ฐ”์ผ ์•ฑ, ๊ฒŒ์ž„๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ๋ถ„์„ํ•˜์—ฌ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜์™€ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜๋“ค์— ๋Œ€ํ•ด ํƒ์ง€๋ฅผ ์œ„ํ•œ ํˆด์ด๋‹ค. ์ฒ˜์Œ์—๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘ํ•˜์˜€์œผ๋‚˜ ํ˜„์žฌ๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์™€ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์„ค์น˜ ๋ฒ„์ „์„ ๋ชจ๋‘ ์ œ๊ณตํ•œ๋‹ค. ์„ผํŠธ๋ฆฌ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜์—ฌ ๊ณ ๊ฐ๋“ค์—๊ฒŒ ๋” ๋‚˜์€ ํ’ˆ์งˆ์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.  ์„ผํŠธ๋ฆฌ์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋“ค 1. ์—๋Ÿฌ ๋ชจ๋‹ˆํ„ฐ๋ง์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๊ธฐ๋กํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค..