๐ŸŸฉ Frontend-HTML & CSS & +JS/๐Ÿ”ฐ React

React Router๋ฅผ ํ™œ์šฉํ•œ ๋ผ์šฐํŒ… ๋ฐ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ

ramen2 2024. 11. 28. 21:34
๋ฐ˜์‘ํ˜•

| react-router-dom

๋ฆฌ์•กํŠธ์˜ ๋ผ์šฐํŒ…์„ ์œ„ํ•œ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

(์•„๋ž˜๋Š” ๋ผ์šฐํŒ… ์„ค์ •, ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ์ฟผ๋ฆฌ ํ™œ์šฉ, ์„œ๋ธŒ๋ผ์šฐํŠธ ๊ตฌ์„ฑ, ๊ทธ๋ฆฌ๊ณ  history ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•)

 

 

| ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

1. react-router-dom ์„ค์น˜

yarn add react-router-dom@5

 

- ํŠน์ • ์ฃผ์†Œ์™€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฐ๊ฒฐํ•  ๋• Route ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ

<Route path="์ฃผ์†Œ" component={๋ณด์—ฌ์ค„_์ปดํฌ๋„ŒํŠธ} />

 

- ์ฃผ์†Œ์ด๋™์€ Link ์ปดํฌ๋„ŒํŠธ๋กœ ์ฒ˜๋ฆฌ

import { Route, Link } from 'react-router-dom';

<Link to="์ฃผ์†Œ">๋ฌธ์ž</Link>

 

 

 

 

| ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ์ฟผ๋ฆฌ

ํŽ˜์ด์ง€ ์ฃผ์†Œ ์ •์˜ ์‹œ ์œ ๋™์ ์ธ ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผ ํ•  ๋•Œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•จ.

  • ํŒŒ๋ผ๋ฏธํ„ฐ: ํŠน์ • ID๋‚˜ ์ด๋ฆ„ ์กฐํšŒ ์‹œ ์‚ฌ์šฉํ•จ.
    ์˜ˆ: /profile/apple
  • ์ฟผ๋ฆฌ: ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ๋‚˜ ์˜ต์…˜ ์ „๋‹ฌ ์‹œ ์‚ฌ์šฉํ•จ.
    ์˜ˆ: /profile?name=apple

- ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ผ์šฐํŠธ ๊ฒฝ๋กœ์—์„œ :ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…์œผ๋กœ ์„ค์ • ๊ฐ€๋Šฅํ•จ.

<Route path="/profile/:username" component={Profile} />

 

- ์ฟผ๋ฆฌ๋Š” ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด qs ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽธํ•จ.

yarn add qs

 

 

 

 

| ์„œ๋ธŒ๋ผ์šฐํŠธ

์„œ๋ธŒ๋ผ์šฐํŠธ๋Š” ๋ผ์šฐํŠธ ๋‚ด๋ถ€์— ๋˜ ๋‹ค๋ฅธ ๋ผ์šฐํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธ

<Route path="/main" component={Main}>
  <Route path="/main/sub" component={SubComponent} />
</Route>

 

 

 

 

| history ๊ฐ์ฒด

history ๊ฐ์ฒด๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๋ผ์šฐํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ.

  • ๋’ค๋กœ๊ฐ€๊ธฐ
  • ํŠน์ • ๊ฒฝ๋กœ ์ด๋™
  • ํŽ˜์ด์ง€ ์ดํƒˆ ๋ฐฉ์ง€

ํŠน์ • ์กฐ๊ฑด์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ด๋™ํ•˜๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ

 

import { useHistory } from 'react-router-dom';

const MyComponent = () => {
  const history = useHistory();

  const handleNavigate = () => {
    history.push('/new-route');
  };

  return <button onClick={handleNavigate}>Go</button>;
};

 

 

๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ธ ๋‚ด์šฉ

 

๋ฐ˜์‘ํ˜•