react-router-dom
-
- [React.js] <Link> ์ปดํฌ๋ํธ์ <NavLink> ์ปดํฌ๋ํธ ๋น๊ต (React Router)
์ปดํฌ๋ํธ์ ์ปดํฌ๋ํธ ๋น๊ต (React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ @@ ์ปดํฌ๋ํธ์ @@ ์ปดํฌ๋ํธ์ ์ฐจ์ด์ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ปดํฌ๋ํธ๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ์์ ์ ๊ณตํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋งํฌ(Link) ์ปดํฌ๋ํธํน์ ๊ฒฝ๋ก๋ก ์ด๋ํ ์ ์๋ ๋ด๋น๊ฒ์ด์ ๋งํฌ๋ฅผ ์์ฑํ๋ค.HTML์ @@ ํ๊ทธ์ ์ ์ฌํ์ง๋ง, ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด SPA(Single Page Application) ๋ด์์ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๋ค. ํน์งํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํ์ง ์๊ณ , ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ ์ ์ํํ๋ค.๋จ์ํ ๋ผ์ฐํ ์ ์ ํฉํ๋ค.์ ํ๋ ์ํ์ ๋ฐ๋ฅธ ์คํ์ผ๋ง ๊ธฐ๋ฅ์ ์๋ค. ์ฌ์ฉ ์์ ์ฝ๋import { Link } from "react-router-dom";function App() { return ( ..
2024.11.13 -
- [React.js] ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)
๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ๋ผ์ฐํ ์ ํ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.v6์ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํ์๋ค. ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ ํํ ๋ ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋ URL์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ์ ์๋ค. ๊ตฌ์ฑ ์์BrowserRouterHTML5์ History API๋ฅผ ์ฌ์ฉํ์ฌ URL์ ๊ด๋ฆฌํ๋ค.์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์์ ์ปดํฌ๋ํธ๋ก ์ฌ์ฉ๋๋ค. Routes๊ฐ ๊ฒฝ๋ก์ ๋ํ ๋ผ์ฐํธ๋ฅผ ์ ์ํ๋ ์ปจํ ์ด๋ํ๋ ์ด์์ @Route@๋ฅผ ์์์ผ๋ก ๊ฐ์ง ์ ์๋ค. Ro..
2024.09.26 -
- [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] 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 -
- [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