React Router๋?
์๋ก์ด ํ์ด์ง๋ฅผ ๋ก๋ํ์ง ์๊ณ ํ๋์ ํ์ด์ง(SPA) ์์์ ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋ ํํ์ด๋ค.
SPA๋? ๐ต๏ธโโ๏ธ
SPA๋
Single Page Application
์ ์ฝ์๋ก ๋ง ๊ทธ๋๋ก ํ์ด์ง๊ฐ ํ๋์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋งํ๋ค. ๊ธฐ์กด์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋, ์ฌ๋ฌ ํ์ด์ง๋ก ๊ตฌ์ฑ๋์ด ์์ด ์๋๋ฉด์์ SPA ๋ณด๋ค ๋์ฑ ๋๋ฆฐ ๋ชจ์ต์ ๋ณด์ธ๋ค.
๋จผ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ํ ๋ผ์ฐํฐ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น ํ๋ค.
$ cd router-tutorial
$ yarn add react-router-dom
๋ผ์ฐํฐ๋ฅผ ์ ์ฉํ ๋
index.js
์์BrowserRouter
๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฉํ๋ค.
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom'; // BrowserRouter ๋ฅผ ๋ถ๋ฌ์ด
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
// App ์ BrowserRouter ๋ก ๊ฐ์
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
);
serviceWorker.unregister();
ํ์ด์ง ์ฃผ์๋ฅผ ์ ์ํ ๋, ์ ๋์ ์ธ ๊ฐ์ ์ ๋ฌํด์ผ ํ ์ ์๋ค. ์ด ๋ ํ๋ผ๋ฏธํฐ์ ์ฟผ๋ฆฌ๋ก ๋๋ ์ง ์ ์๋ค.
ํ๋ผ๋ฏธํฐ: /profiles/velopert
์ฟผ๋ฆฌ: /about?details=true
- ํ๋ผ๋ฏธํฐ : ํน์ id๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์กฐํ๋ฅผ ํ ๋ ์ฌ์ฉ
- ์ฟผ๋ฆฌ : ํน์ ํค์๋๋ฅผ ๊ฒ์ํ๊ฑฐ๋, ์์ฒญ์ ํ ๋ ํ์ํ ์ต์ ์ ์ ๋ฌํ ๋ ์ฌ์ฉ
์๋ธ ๋ผ์ฐํธ๋ ๋ผ์ฐํธ ๋ด๋ถ์ ๋ผ์ฐํธ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ฐ๋จํ๊ฒ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด ๊ทธ ์์ ๋
Route
์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง ํ๋ฉด ๋๋ค.
Router
๋ฅผHook
์ ์ด์ฉํ์ฌ ๊ตฌํํ ์ ์๋๋ฐuseReactRouter
๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
$ yarn add use-react-router
์ถ์ฒ : ํจ์คํธ์บ ํผ์ค ๊ฐ์ - ๋ฒจ๋กํผํธ์ ํจ๊ปํ๋ React Router