React (14) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [ React 18+ ] RSC(React Server Componen) ํํค์น๊ธฐ. RSC๋ React Server Components์ ์ฝ์๋ก, React18 ๋ฒ์ ๋ถํฐ ๋ฑ์ฅํ ๊ฐ๋ ์ด๋ค.์๋ฒ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง ํ๊ณ ํด๋ผ์ด์ธํธ์์ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก, ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ ํฅ์์ ์ํด ๋ฑ์ฅํ ๊ธฐ๋ฅ์ด๋ค. RSC๋ React์ ์์ฒด์ ์ธ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๊ผญ Next.js๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ตฌํํ ์ ์์ง๋ง, RSC๋ ์๋ฒ-ํด๋ผ์ด์ธํธ์ ์ํธ์์ฉ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ Node.js๊ธฐ๋ฐ์ ์๋ฒ ํ๊ฒฝ์ด ํ์ํ๋ค. ๊ทธ๋์ Next.js๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด Express.js ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์๋ฒ๋ฅผ ๋ง๋ค๊ณ , ์๋ฒ-ํด๋ผ์ด์ธํธ ์คํธ๋ฆฌ๋ฐ, Webpack ๋ฒ๋ค๋ง(์๋ฒ / ํด๋ผ์ด์ธํธ), ๋ฐ์ดํฐ ํต์ , ์ฑ๋ฅ ์ต์ ํ(์บ์ฑ) ๋ฑ์ ์ถ๊ฐ์ ์ธ ์ค.. 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์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Zustand์ ๋ํ ๊ฐ๋ต ์ ๋ฆฌ๊ธ. ๋ ์ผ์ด๋ก "์ํ"๋ฅผ ์๋ฏธํ๋ Zustand๋ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋จ์ํ๋ Flux ํจํด์ ์ฌ์ฉํ๋ ์๊ณ ๋น ๋ฅธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.hook์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ ๊ฐํธํ API๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ต์ํ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ์ง๊ด์ ์ด๊ณ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค. ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ํน์ง 1. ์ฌํํ API: Zustand์ API๋ ๋งค์ฐ ๊ฐ๋จํ๋ค. ๋ณดํต 1~2๊ฐ์ hook๋ง ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ์ ์ํ๊ณ , ์ด๋ฅผ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๋ค. ์ฃผ๋ก `create` ํจ์์ `useStore` ํ ์ ์ฌ์ฉํ๋ค.2. ์ด๊ฒฝ๋: Zustand๋ ๊ฒฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํฌ๊ธฐ๊ฐ ์๊ณ ๋น ๋ฅด๋ค. React Context API ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ๋ค๋ฅธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น.. [ React ] Suspense๋ ๋ฌด์์ผ๊น? React์ Suspense๋ React 18์์ ์ ์์ผ๋ก ์ง์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ React์ ๋ด์ฅ ์ปดํฌ๋ํธ๋ก, ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ์งํ๋๋ ๋์, ์ฌ์ฉ์์๊ฒ ๋ก๋ฉ์ ๋ํ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. Suspense๋ Suspense์ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ๊ณ , ๊ฒฝ๊ณ ๋ด์์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋๋๋ ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ์ ๋ํ ๋ก๋ฉ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ด๋ฐ ๋ก๋ฉ ์ํ๋ fallbackํ๋กํผํฐ๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ํ์๋๋ค. Suspense์ ์์ ์ปดํฌ๋ํธ(children)๊ฐ ์ค์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ดํ์ ๋ ๋๋ง ๋๋ ์ปดํฌ๋ํธ์ด๋ค. ์์ ๊ฐ์ด {children}๋ก ์ฌ์ฉ๋๋ฉฐ, React Suspense๋ ์ฃผ๋ก React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ํด ์ฌ์ฉ๋๋ React.lazy์ ํจ๊ป ์ฌ์ฉ๋๋ค.(React.lazy.. [ React ] ์ํ ๊ด๋ฆฌ ํด ๋น๊ต ๋ถ์ Recoil vs Zustand ํ์ฌ์์ ์๋ก์ด React ํ๋ก์ ํธ๋ฅผ ์ธํ ์ค์ธ๋ฐ, ์ ์ญ ์ํ๊ด๋ฆฌ ํด ์ค์์ ํ์๋ค์ด ๋น ๋ฅด๊ฒ ๋ฐฐ์ฐ๊ณ ํ์ฉํ ์ ์๋๋ก ์ฝ๊ฒ React ํ๋ก์ ํธ์ ์ํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ํด 2๊ฐ์ง๋ฅผ ๋น๊ตํด ๋ณด๊ฒ ๋์๋ค. Recoil (v0.7.7 ๊ธฐ์ค) ์ ์ฒด ์นด์ดํฐ ์ฝ๋ counter sample code Recoil์ ์๋์ฒ๋ผ ์ฐ์ธ๋ค. (ํ ์คํธ ์ฝ๋ ์ผ๋ถ) import "./App.css"; import { countState } from "./state/countState"; import { useRecoilValue, useSetRecoilState, useResetRecoilState } from "recoil"; function App() { const count = useRecoilValue(countState); .. [ GitHub Action ] GitHub Action์ ์ด์ฉํ์ฌ ํ๋ก์ ํธ CI/CD ์ธํ ํ๊ธฐ. GitHub Action GitHub Action์ ๋น๋์ ํ ์คํธ, ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ์๋ํํ ์ ์๋ CI/CD(์ง์์ ์ธ ํตํฉ/์ง์์ ์ธ ๋ฐฐํฌ) ํ๋ซํผ์ผ๋ก, Git ์ ์ฅ์์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๋ํ ์๋ํ๋ ์์ ์ ์ํํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฌํ ์์ ์ Git ์ ์ฅ์์ ์ํ ๋ณ๊ฒฝ, ์ ๋ธ๋์น ์์ฑ, ์ฝ๋ ํธ์, ์ด์ ๋ฑ๋ก, Pull Request ๋ฑ์ ๋์์ผ๋ก ํ ์ ์์ผ๋ฉฐ ๋ชจ๋ ๋ ํฌ์งํ ๋ฆฌ์ PR ๋๋ ์์ฉ ๋ฐฐํฌ๋ฅผ ์ํ merged PR ๋น๋์ ํ ์คํธ ์ํฌํ๋ก์ฐ๋ฅผ ์์ฑํ ์ ์๋ค. Git Action์ ์ฌ์ฉํ๋ฉด ์ ์ฅ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ง์ ๋ ์์ ์ด ์คํ๋์ด ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ฝ๋ ํธ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ์๋์ผ๋ก ์ฝ๋ ํ ์คํธ, ๋น๋ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ .. [ React ] React Props ์์๋ณด๊ธฐ. React๋ฅผ ์ฒ์ ์์ํ๋ ์ฌ๋๋ค ๋๋ React์ ๊ฒฝํ์ด ๋ง์ง ์์ ์ฌ๋๋ค์๊ฒ ๋น์ทํด๋ณด์ฌ์ ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์๋ React Props์ React State์ ๋ํด ์ฐจ์ด์ ์ ๋ํ ํฌ์คํ ์ ํ๋ ค๊ณ ํ์ง๋ง React์ Props๋ฅผ ๋จผ์ ์ดํดํด์ผ state์ ๋ํด ์ดํดํ๊ธฐ ๋์ฑ ์ฌ์ธ ๊ฒ ๊ฐ์, props์ ๋ํด ๋จผ์ ์์๋ณด๋ ค ํ๋ค. props์ state๋ React์ ํด๋์ค ์ปดํฌ๋ํธ์ ํจ์ ์ปดํฌ๋ํธ์์ ๋ชจ๋ ์ฌ์ฉ๋๋ค. Props React์์ props๋ "properties"์ ์ค์๋ง๋ก, ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก, ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ๋ ๋ฐ์ดํฐ๋ props๋ผ๋ ๊ฐ์ฒด ํํ๋ก ์ ๋ฌ๋๋ฉฐ, ์์ ์ปดํฌ๋ํธ๋ ์ด props ๊ฐ์ฒด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผํ .. [ webpack ] React(๋ฆฌ์กํธ)์ webpack(์นํฉ) React.js๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด ํญ์ webpack๊ณผ ๊ฐ์ ๋ชจ๋ ๋ฒ๋ค๋ฌ ํด์ ์ฌ์ฉํ๊ฒ ๋๋ค. ์นํฉ ๊ณต์ ์ฌ์ดํธ์์ ์๊ฐํ๋ ์ปจ์ ์ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ์ ์ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ผ๊ณ ๋งํ๋ค. ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ ์ฌ๋ฌ ๋ค๋ฅธ ํ์ผ๋ค(JavaScript, LESS, CSS, JSX, ESNext ๋ฑ)์ ๋ฐ์์ ํ๋์ ํ์ผ๋ก ๋ฌถ์ด์ค๋ค. ์ด๋ ๊ฒ ์ฌ๋ฌ ๋ค๋ฅธ ํ์ผ๋ค์ ๋ฐ์ ํ๋์ ํ์ผ๋ก ๋ฌถ์ด์ฃผ์ด ์๊ธฐ๋ ์ด์ ์ ํฌ๊ฒ ๋ชจ๋์ฑ๊ณผ ๋คํธ์ํฌ ์ฑ๋ฅ์ด ์๋๋ฐ, ๋ชจ๋์ฑ์ ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ธฐ ์ฝ๊ฒ ์ฌ๋ฌ ๋ถ๋ถ์ด๋ ๋ชจ๋๋ก ๋๋ ์ ๋ค๋ฃฐ์ ์๊ฒ ํด์ฃผ์ด ํ ์์ ๋ฑ์ ํ์ ์ ์ ๋ฆฌํ๋ค. ๋ ๋คํธ์ํฌ ์ฑ๋ฅ์ ์ธก๋ฉด์์๋ ์์กด ๊ด๊ณ๊ฐ ์๋ ์ฌ๋ฌ ํ์ผ์ ๋ฌถ์ ๋ฒ๋ค์ ๋ธ๋ผ์ฐ์ ๊ฐ 1๋ฒ๋ง ์ฝ๊ธฐ ๋๋ฌธ์ ๋คํธ์.. ์ด์ 1 2 ๋ค์