์ ์ฒด ๊ธ (90) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ React / Next.js Next.jsReact๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ์คํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ. ๋ฆฌ์กํธ์์๋ ๊ตฌํํ๊ธฐ ํ๋ SSR์ ๋ณด๋ค ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. /*SSR(Server Side Rendering) : ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ฃผ์ฒด๊ฐ ์๋ฒ๋ก, ํด๋ผ์ด์ธํธ๊ฐ ํ์ด์ง๋ฅผ ์์ฒญํ๋ฉด HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๋ณด๋ด์ฃผ๋ ๋ฐฉ์ MPA(Multi Page Application) : ์ฌ๋ฌ ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ , ํ์ด์ง ์ ํ ์ ํ๋ฆฌ์ปค ํ์ ๋ฐ์ CSR(Client Side Rendering) : ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ฃผ์ฒด๊ฐ ํด๋ผ์ด์ธํธ๋ก, ์๋ฒ๋ ๋น html๋ง ๋ณด๋ด์ฃผ๋ฉฐ ํด๋ผ์ด์ธํธ ์ชฝ์์ jsํ์ผ์ ๋ณด๋ด๋ฉฐ ๋น html์ ์ฑ์์ค, ํ์ด์ง๊ฐ ์ ํ๋๋ฉฐ ํ๋ฉด์ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ๊ทธ ๋ถ๋ถ๋ง js๋ก ๋ณํ์ํดSPA(Single Page Applica.. React / Debounce, Throttle Debounce & Throttle์ฐ์์ ์ผ๋ก ๋ฐ์ํ๋ ํจ์๋ ์ด๋ฒคํธ์ ์คํ ๋น๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๋ฌถ์ด์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ์ผ๋ก, ์ต์ ํ๋ฅผ ํตํ ์ฑ๋ฅ ํฅ์์ด ๋ชฉ์ ์ด๋ค. Debounce vs Thottle 1) ํจ์๋ ์ด๋ฒคํธ๊ฐ ์ฐ์์ ์ผ๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ 2) ํจ์๋ ์ด๋ฒคํธ๊ฐ ์ฐ์์ ์ด ์๋ ๋์ด์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ Debounce : ์ฐ์์ ์ผ๋ก ํจ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ ํ ์ผ์ ์๊ฐ ๋์ ์ถ๊ฐ ์ด๋ฒคํธ/ํจ์๊ฐ ์๋ค๋ฉด ์คํThrottle : ์ฐ์์ ์ผ๋ก ํจ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๋์ ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ(ํ ์ ๊ฐ์ง๊ณ )์ผ๋ก ์คํ Debounce์ฐ์์ ์ผ๋ก ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ํ๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก, ๋ง์ง๋ง์ ํ ๋ฒ์ ๋ฌถ์ด์ ์ฒ๋ฆฌํด๋ ์๊ด ์์ ๋ ์ฌ์ฉํ๋ค.๊ฒ์ ์๋ ์์ฑ ๊ฐ์ ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ์ ์ ์ฉํ๋ค. ์์์ด๋ฒ์๋ ์ด์ ์ .. React / ๋ฒ๋ค๋ง, ์ฝ๋์คํ๋ฆฌํ ๋ฒ๋ค๋ง์ฌ๋ฌ ๊ฐ์ ํ์ผ(Javascript, CSS ๋ฑ)์ ํ๋์ ํ์ผ๋ก ํฉ์น๋ ๊ฒVite๋ก ๋ง๋ค์ด์ง ํ๋ก์ ํธ์ ๊ฒฝ์ฐ Rollup, CRA๋ Webpack์ด๋ผ๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ค. ํจ๊ณผHTTP ์์ฒญ์ ์๋ฅผ ์ค์ฌ ์๋ ํฅ์ (๋ชจ๋ javascript, css, ์ด๋ฏธ์ง ํ์ผ์ ํ๋์ ํ์ผ์ด๋ ์ฌ๋ฌ ํ์ผ๋ก ๊ฒฐํฉํจ)์ฝ๋๋ฅผ ์์ถํด ํ์ผ ํฌ๊ธฐ ์ถ์ (๋ถํ์ํ ๊ณต๋ฐฑ, ์ฃผ์ ๋ฑ์ ์ ๊ฑฐํ๊ณ ๋ณ์๋ช ์ ๋จ์ถํจ)์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํด ์ต์ ํ (Tree shaking์ผ๋ก dead code ์ ๊ฑฐ) package.json์์ build ํญ๋ชฉ์ ์ฐพ์๋ณผ ์ ์๋๋ฐ, ์ด build์๋ ๋ฒ๋ค๋ง ๊ณผ์ ์ด ํฌํจ๋์ด ์๋ค. ์ด์ ์ ์ค์ตํ๋ https://hydeveloper.tistory.com/210์ ํ๋ก์ ํธ๋ฅผ ๋น๋ํด ๋ดค๋ค.ํฐ๋ฏธ๋.. React / lazy, Suspense React์์๋ SPA(Single Page Application)์ผ๋ก ๊ตฌํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ์ปดํฌ๋ํธ๋ ๋ถ๋ฌ์ค๊ณ ์๋ค. ์ด๋ก ์ธํด ๋ ๋๋ง ์๊ฐ์ด ๊ธธ์ด์ง ์ ์๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค. ์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด lazy์ Suspense๊ฐ ์ฌ์ฉ๋๋ค. lazy์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋ก ๋ถ๋ฌ์ค์ง ์๊ณ ์ค์ ๋ก ๊ทธ ์ปดํฌ๋ํธ๊ฐ ํ์ํ ๋ ๋ถ๋ฌ์จ๋ค.lazy์ ์ธ์๋ก import ํจ์๋ฅผ ์ ๋ฌํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ๋ค.* lazy๋ ๋ณดํต ๋ชจ๋์ ์ต์์ ์์ค์์ ์ ์ธ๋์ด์ผ ๋ ๋๋ง ์ ๋ชจ๋ ์ํ๊ฐ ์ฌ์ค์ ๋๋ ํ์์ ๋ง์ ์ ์๋ค// ๊ธฐ์กด import ๋ฐฉ์import Main from "./Main.jsx"// lazy ์ฌ์ฉ ์const Main = lazy(()=>import("./Main.jsx")); Suspsen.. React / React Developer Tools React ๊ฐ๋ฐ์ ๋๊ตฌ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก React ์ปดํฌ๋ํธ๋ฅผ ๊ฒ์ฌํ๊ณ Props์ State๋ฅผ ํธ์งํ ์ ์์ผ๋ฉฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์๋ค.์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ๋ค.์ปดํฌ๋ํธ ํ์, ๊ณ์ธต ๊ตฌ์กฐ ํ์์ํ ๋ฐ props, hooks ํ์ธ์ํ ๋ณํ ์ถ์ virtual DOM ์๊ฐํ ๊ณต์ ํํ์ด์ง : https://ko.react.dev/learn/react-developer-tools ์ฌ์ฉ ๋ฐฉ๋ฒ ์์์ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์คํ์์ผฐ์ ๋, ๊ฐ๋ฐ์ ๋๊ตฌ์ Components ํญ์์ ํ์ธํ ์ ์๋ค.์ปดํฌ๋ํธ ๋จ์๋ก ํ๋ฉด์ ๊ตฌ์ฑ์ ํ์ธํ ์ ์์ผ๋ฉฐ, props๋ hooks๋ ๋ณด์ฌ์ง๋ค. ์ฌ๊ธฐ์ ๋นจ๊ฐ ๋๊ทธ๋ผ๋ฏธ๋ก ํ์ํด๋ ํฑ๋ ์์ด์ฝ์ ํด๋ฆญํ๋ฉด ์ค๋ฅธ์ชฝ ์ด๋ฏธ์ง์ ๊ฐ์ ์ค์ ๋ชจ๋ฌ์ด ๋จ๋๋ฐ,Highlight .. React / ์ต์ ํ ํจ์ ์ํ๊ฐ ๋ณํ๋๋ฉด ๋ฆฌ๋ ๋๋ง์ด ๋๋ ๊ฒ์ React์ ๊ธฐ๋ณธ ํน์ง์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ ๋๋ง์ด ํ์์๋ ์ปดํฌ๋ํธ๋ค๋ ํจ๊ป ๋ฆฌ๋ ๋๋ง์ด ๋๊ณค ํ๋ค. ๋, ํ์ด์ง ์ฒซ ๋ก๋ฉ ์ csr๋ฐฉ์ ๋๋ฌธ์ ๋น๊ต์ ์ค๋ ๊ฑธ๋ฆฌ๋๋ฐ, ์ด๋ฌํ ์ด์ ๋๋ฌธ์ ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง ์๋ก ์ต์ ํ๊ฐ ํ์ํด์ง๋ค. ๊ธฐ์กด ์ปดํฌ๋ํธ์ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค. ์์ธํ ๋ด์ฉ์ ์๋ช ์ฃผ๊ธฐ ๊ธ ์ฐธ๊ณ ํด๋์ค ์ปดํฌ๋ํธ์ปดํฌ๋ํธ๋ฅผ ํด๋์ค๋ก ์ ์ -> ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๊ฐ ํ๋ฉด์ ํ์๋จ์ํ ๋ณ๊ฒฝ ์ -> ์ธ์คํด์ค์ ๋ด๋ถ ๊ฐ์ด ๋ณ๊ฒฝ -> ๋ฐ๋ ๊ฐ์ ๋ง์ถฐ ํ๋ฉด์ด ๋ฆฌ๋ ๋๋ง=> ํ๋ฒ ๋ง๋ค์ด์ง ์ธ์คํด์ค๋ ์ ๊ฑฐ๋๊ธฐ ์ ๊น์ง ๊ณ์ํด์ ์ฌ์ฌ์ฉ๋จ ํจ์ํ ์ปดํฌ๋ํธ์ปดํฌ๋ํธ๋ฅผ ํจ์๋ก ์ ์ -> ํจ์ ํธ์ถ์ํ ๋ณ๊ฒฝ -> ๊ธฐ์กด์ ํธ์ถ๋ ํจ์ ์ ๊ฑฐ -> ์๋ก์ด ์ํ ๊ฐ์ผ๋ก ํจ์ ํธ์ถ -> ํ๋ฉด์ ๋ .. React / ์ ์ญ ์ํ ๊ด๋ฆฌ (2) - Redux, Redux Toolkit Redux์ ์ญ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, flux ๊ท๊ฒฉ์ reducer๊ฐ ๊ฒฐํฉ๋ ํจํด์ด๋ค. Flux๋ณด๋ค ๋์ฑ ๊ฐ๋จํ๋ค๋ ์ ์ด ํน์ง์ด๋ค. * Flux ํจํดFacebook์์ ๋ง๋ ์ํคํ ์ฒ ํจํด, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋จ๋ฐฉํฅ์ผ๋ก ์ ์งํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ฐ์ดํฐ ํ๋ฆ : View → Action → Dispatcher → Store → View ์ ๋ฐ์ดํธ Redux์ ๋ฐ์ดํฐ ํ๋ฆ๊ตฌ์ฑ์์Action : ์ํ๋ฅผ ์ด๋ป๊ฒ ๋ณํ์ํฌ ๊ฒ์ธ์ง์ ๋ํ ๋ด์ฉ์ ๋ด์ ๊ฐ์ฒด↓Dispatch : ์ก์ ๊ฐ์ฒด๋ฅผ Reducer๋ก ๋๊ฒจ์ฃผ๋ ์ญํ ์ ํ๋ ํจ์↓Reducer : ๋ฆฌํดํ๋ ๊ฐ์ด ์๋ก์ด ์ํ๊ฐ ๋๋ ํจ์์ฌ๋ฌ ๊ฐ๋ผ๋ฉด combineReducers ํจ์๋ก ๋ฌถ์ด ํ๋๋ก ๋ง๋ค ์ ์์Store : Redux์ ์ ์ญ ์ํ ์ ์ฅ์, .. React / ์ ์ญ ์ํ ๊ด๋ฆฌ (1) - ๋ด๋ถ React๋ ๋ํ์ ์ธ SPA(Single Page Application) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.SPA๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ด๋ฅผ ๊ฐ์งํด ํ์ํ ๋ถ๋ถ๋ง ๋ฆฌ๋ ๋๋ง ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์, ์ํ ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ์ค์ํ๋ค. React์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก๋ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.๋ด๋ถ์ธ๋ถuseStateContextAPIRedux, Redux ToolkitRecoil, MobX, Zustand, Jotai ... ์ ์ญ ์ํ๊ด๋ฆฌ์ ์ฅ์ Props Drilling ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ํ ๋, ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ์ค๊ฐ ์ปดํฌ๋ํธ๋ค๊น์ง props๋ฅผ ๊ณ์ ๋๊ฒจ์ค์ผ ํ๋ ํ์์ ์๋ฏธํ๋ค. ์ด์ ์ ํ๋ todo list ๋ง๋ค๊ธฐ์๋ props drilling์ ์ฐพ์๋ณผ ์ ์๋ค. .. ์ด์ 1 2 3 4 ยทยทยท 12 ๋ค์