2024/07
-
- [React.js] ๋๊ด์ ์ ๋ฐ์ดํธ(Optimistic Updates) (React Query)
๋๊ด์ ์ ๋ฐ์ดํธ(Optimistic Updates) (React Query)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ์ฟผ๋ฆฌ(React Query)์์ ์ฌ์ฉ๋๋ ๋๊ด์ ์ ๋ฐ์ดํธ(Optimistic Updates)์ ๋ํ์ฌ ์ ๋ฆฌํด๋ณธ๋ค. ๋๊ด์ ์ ๋ฐ์ดํธ(Optimistic Updating)๊ฐ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ์๋ฒ์ ๋ฐ์๋๊ธฐ ์ ์ ๋ฏธ๋ฆฌ UI์ ๋ฐ์ํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ํฅ์์ํค๋ ๊ธฐ๋ฒ์ฌ์ฉ์๊ฐ ์๋ฒ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๊ฒ ํด์ค๋ค. ์ฃผ์ ๋จ๊ณโ ๋ณ๊ฒฝ ์ ์ํ ์ ์ฅ๋๊ด์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๊ธฐ ์ ์, ํ์ฌ ์ํ๋ฅผ ์ ์ฅํ๋ค.์ด ์์ ์ ์๋ฒ ์์ฒญ์ด ์คํจํ์ ๊ฒฝ์ฐ ์๋ ์ํ๋ก ๋กค๋ฐฑ(Rollback)ํ๊ธฐ ์ํด ํ์ํ๋ค. โก ๋๊ด์ ์ํ ์ ๋ฐ์ดํธ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ ์, ๋ฆฌ์กํธ ์ฟผ๋ฆฌ์ @queryClient.setQu..
2024.07.10 -
- [React.js] ๋ฆฌ์กํธ ์ฟผ๋ฆฌ(Tanstack Query, React Query)
๋ฆฌ์กํธ ์ฟผ๋ฆฌ(Tanstack Query, React Query)๋ค์ด๊ฐ๋ฉฐReact Query๋ผ๊ณ ๋ถ๋ฆฐ Tanstack Query ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.Tanstack Query(React Query)๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ ์ํ(๋ฐ์ดํฐ)๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์กฐ์ํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌReact Query๊ฐ 2022๋ ์ด์ Tanstack Query๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์๋ค.React Query๊ฐ ํฌํจ๋ Tanstack ์ํ๊ณ๋ฅผ ํ์ฅํ๊ณ , ๋ค์ํ ํ๋ ์์ํฌ์ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์๋ ๋ฒ์ฉ ๋ฐ์ดํฐ ํ์นญ ๋ฐ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชฉํ๋ก ํ๊ธฐ ์ํด์ ์๋ค๊ณ ํ๋ค.Tanstack Query๋ ์ด์ React๋ฟ๋ง ์๋๋ผ Vue, Svelte, Solid์ ๊ฐ์ ๋ค๋ฅธ ํ๋ ์์ํฌ์ ๋ํ ์ง์๋ ํฌํจํ๊ณ ..
2024.07.09 -
- [React.js] ์ง์ฐ ๋ก๋ฉ(Lazy Loading)
์ง์ฐ ๋ก๋ฉ(Lazy Loading)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ฝ๋ ์ต์ ํ ์์ ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ, ์ด๋ ์ง์ฐ ๋ก๋ฉ(Lazy Loading)์ ํ์ฉํ ์ ์๋ค.์ง์ฐ ๋ก๋ฉ(Lazy Loading)์ด ๋ฌด์์ธ์ง ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค. ์ง์ฐ ๋ก๋ฉ(Lazy Loading)๊ฐ๋ ํ์ํ ์์ ์ ํน์ ์ปดํฌ๋ํธ๋ ๋ชจ๋์ ๋ก๋ํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ธฐ์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ด๊ธฐ ๋ก๋ฉ ์ ๋ถํ์ํ ์ฝ๋๊ฐ ๋ก๋๋์ง ์์ผ๋ฉฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ@React.lazy@์ @Suspense@๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋์ ์ผ๋ก @import@ํ๊ณ ๋ก๋ฉ์ด ์๋ฃ๋ ๋๊น์ง ๋์ฒด UI(fallback)๋ฅผ ํ์ํ ์ ์๋ค. โ ์ปดํฌ๋ํธ ๋์ im..
2024.07.08 -
- [React.js] useSearchParams ํ (React Router)
useSearchParams ํ (React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ์ ๊ณตํ๋ @useSearchParams@ ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. useSearchParams๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๋ฅผ ์ฌ์ฉํ์ฌ URL์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฝ๊ณ ์ค์ ํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ์ด ํ ์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ URL์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ฝ๊ฒ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๋ค.React Router v6์์ ๋์ ๋์๊ณ , ๊ธฐ์กด์ @useLocation@๊ณผ @useHistory@ ํ ์ ๊ฒฐํฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ฌ์ฉ๋ฒimport React from 'react';import { useSearchParams } from 'react-router-dom';function MyComponent() { /..
2024.07.08 -
- [React.js] defer() (React Router)
defer() (React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ์ ๊ณตํ๋ @defer()@์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. defer()๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ ์ ์ ํ์ด์ง ์ผ๋ถ๋ฅผ ๋จผ์ ๋ ๋๋งํ๊ณ , ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋ฉด ๋๋จธ์ง ๋ถ๋ถ์ ๋ ๋๋งํ ์ ์๋๋ก ํด์ค๋ค.ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ํฅ์์ํค๊ณ , ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ ์ค๋ค. ์ฃผ์ ํน์ง๋น๋๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ@defer@๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ ์ผ๋ถ ํ์ด์ง ์ฝํ ์ธ ๋ฅผ ๋จผ์ ๋ ๋๋งํ๊ณ , ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋ฉด ๋๋จธ์ง ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๋ค.๋น ๋ฅธ ํ์ด์ง ๋ ๋๋ง๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ ํ์ด์ง ์ผ๋ถ๋ฅผ ์ฆ์ ๋ ๋๋งํ ์ ์์ด ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ ๋จ์ถํ..
2024.07.07 -
- [React.js] useFetcher ํ (React Router)
useFetcher ํ (React Router)๋ค์ด๊ฐ๋ฌ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ์ ๊ณตํ๋ @useFetcher()@ ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. useFetcher๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ํ์ด์ง ์ ํ ์์ด ๋ฐ์ดํฐ ๋ก๋ฉ์ด๋ ์ก์ ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ ํ (Hook)์ฃผ๋ก ํผ ์ ์ถ์ด๋ ๋ฐ์ดํฐ ํ์นญ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌํ๊ณ , ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์ ํ ์์ด ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค. ์ฃผ์ ๊ธฐ๋ฅ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ก์ ํธ๋ฆฌ๊ฑฐ๋ก๋ฉ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์ค๊ฑฐ๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ ์ ์๋ค.ํ์ด์ง ์ ํ ์์.ํ์ด์ง ์ ํ ์์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ ์ถํ ์ ์์ผ๋ฏ๋ก, ์ฌ์ฉ์ ๊ฒฝํ์ด ๋ณด๋ค ๋งค๋๋ฝ๋ค.์ํ ๊ด๋ฆฌํ์ฌ ๋ก๋ฉ ์ํ์ ๋ก๋ฉ ์๋ฃ ํ ๋ฐ์ดํฐ๋ฅผ..
2024.07.07 -
- [React.js] json() ์ ํธ๋ฆฌํฐ ํจ์ (React Router)
json() ์ ํธ๋ฆฌํฐ ํจ์ (React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ์ ๊ณตํ๋ @json()@ ์ ํธ๋ฆฌํฐ ํจ์์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. json()๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ ์ ๊ณตํ๋ ํจ์React Router v6.4์์ ์ถ๊ฐ๋ ์ ํธ๋ฆฌํฐ ํจ์์ฃผ๋ก ๋ผ์ฐํฐ ํธ๋ค๋ฌ์์ ์ฌ์ฉ๋๋ฉฐ, JSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ต(Response)์ผ๋ก ๋ฐํํ๋ค. ํน์ง์๋ ์ค์ ๋ Content-Type@json()@ ํจ์๋ ๋ฐํ๋ ์๋ต์ @Content-Type@ ํค๋๋ฅผ @application/json@์ผ๋ก ์๋์ผ๋ก ์ค์ ํ๋ค.๊ฐํธํ ์ฌ์ฉJSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋๋ฐ ํ์ํ ์ฝ๋๋ฅผ ๊ฐ์ํํ์ฌ, ๊ฐ๋ฐ์๊ฐ ๋ณด๋ค ์ง๊ด์ ์ด๊ณ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.์ํ(Status) ์ฝ๋ ์ค์ ๊ฐ๋ฅ@..
2024.07.05 -
- [JavaScript] JSON(JavaScript Object Notation) ๋ค๋ฃจ๊ธฐ
JSON(JavaScript Object Notation) ๋ค๋ฃจ๊ธฐ๋ค์ด๊ฐ๋ฉฐ์น ์๋ฒ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ๋ ์ฌ์ฉ๋๋ ํ์ผ ํ์์ธ JSON(JavaScript Object Notation)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. JSON(JavaScript Object Notation)๊ฐ๋ ๋ฐ์ดํฐ ๊ตํ ํ์์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉ๋ ๊ฐ์ฒด๋ฅผ ํฌํจํ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ค.์๋ฐ์คํฌ๋ฆฝํธ๋ JSON ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด JSON ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ๋ค. ์ฃผ์ ๋ฉ์๋JSON ๊ฐ์ฒด์ ์ฃผ์ ๋ฉ์๋๋ก๋ @JSON.stringify()@์ @JSON.parse()@๊ฐ ์๋ค. โ JSON.stringfy()์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด(@{ prop: value, ... }@)๋ ๋ฐฐ์ด(@[value1, ..., valueN]@)..
2024.07.05 -
- [React.js] useRouterError ํ (React Router)
useRouterError ํ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์ @useRouterError@ ํ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. useRouterError ํ ๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(@react-router-dom@)์์ ์ ๊ณตํ๋ ํ ๋ผ์ฐํธ ์ฒ๋ฆฌ ์ค ๋ฐ์ํ ์๋ฌ๋ฅผ ์ก์์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.์ฃผ๋ก ์ค๋ฅ ๊ฒฝ๊ณ(Error Boundary)์ ํจ๊ป ์ฌ์ฉ๋์ด, ๋ผ์ฐํธ ๋ด์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ฌ์ฉ์์๊ฒ ์ ์ ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ค๋ฅ ๊ฐ์ง: ๋ผ์ฐํธ ์ปดํฌ๋ํธ์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์๋ค.์๋ฌ ํธ๋ค๋ง: ๊ฐ์ง๋ ์ค๋ฅ๋ฅผ ์ฌ์ฉ์ ์ ์ ์๋ฌ ๋ฉ์์ง๋ ์ปดํฌ๋ํธ๋ก ๋ ๋๋งํ ์ ์๋ค.์ค๋ฅ ์ ๋ณด ์ ๊ณต: ์ค๋ฅ ๊ฐ์ฒด๋ฅผ ๋ฐํํ์ฌ ์ค๋ฅ ๋ฉ์์ง, ์คํ ํธ๋ ์ด์ค ๋ฑ์ ํ์ฉํ ์ ์๋ค. ์ฌ์ฉ ์์ ์์ 1..
2024.07.05 -
- [React.js] React Router์ loader ์์ฑ
React Router์ loader ์์ฑ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(@react-router-dom@)์ @loader@ ์์ฑ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React Router์ @loader@ ์์ฑReact Router Version 6 ๋ถํฐ ์ฌ์ฉํ ์ ์๋ค.์ปดํฌ๋ํธ๊ฐ ๋๋๋ง๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.๋ก๋ ํจ์์์ ๋ฐํ๋ ๋ฐ์ดํฐ๋ ์๋์ผ๋ก ํด๋น ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.๋ก๋๋ ํจ์๋ก ์ ์๋๋ฉฐ, ํด๋น ํจ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ปดํฌ๋ํธ์ ์ ๋ฌํ๋ค.๋ก๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ด, ์ปดํฌ๋ํธ๊ฐ ์ด๊ธฐ ๋ก๋ฉ ์ํ๋ฅผ ํ์ํ์ง ์๊ณ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ ์ ์๋ค.๋ฐ๋ผ์ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ค. ์์ ์ฝ๋import { RouterProvider, cre..
2024.07.03 -
- [React.js] ๋ผ์ฐํฐ ์ค์ ๋ฐฉ๋ฒ (React Router)
๋ผ์ฐํฐ ์ค์ ๋ฐฉ๋ฒ (React Route)๋ค์ด๊ฐ๋ฉฐReact Router(@react-router-dom@)์ ์ด์ฉํ์ฌ ๋ผ์ฐํฐ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒํจํค์ง ์ค์นํ๊ธฐ@react-router-dom@ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ ์คํํ๋ค.$ npm install react-router-dom # yarn add react-router-dom ๋ฐฉ๋ฒ 1@createBrowserRouter@๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.import { createBrowserRouter, RouterProvider,} from "react-router-dom";import HomePage from "./pages/Home";import ProductsPage from "./pages/Products";co..
2024.07.02