Path Variable โ
- ๊ฒฝ๋ก์ ๋ณ์๋ฅผ ์ฌ์ฉ
- URL์ ๋ณ์๋ฅผ ๋ด์์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
useParams
์ฌ์ฉ
โ ์ฌ๋ฌ ๊ฐ์ง์ ๊ฒ์๋ฌผ์ ๋ฐ๊ฒ๋๋ ๊ฒฝ์ฐ
- 1๋ฒ ๊ฒ์๋ฌผ์ธ์ง, 2๋ฒ ๊ฒ์๋ฌผ์ธ์ง ..... n๋ฒ ๊ฒ์๋ฌผ์ธ์ง
App.js
import './App.css';
import { BrowserRouter, Route, Routes } from 'react-router-dom';
import RouteTest from './components/RouteTest';
import Home from './pages/Home';
import New from './pages/New';
import Edit from './pages/Edit';
import Diary from './pages/Diary';
function App() {
return (
<BrowserRouter>
<div className="App">
<h2>App.js</h2>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/new" element={<New />} />
<Route path="/edit" element={<Edit />} />
<Route path="/diary/:id" element={<Diary />} />
</Routes>
<RouteTest />
</div>
</BrowserRouter>
);
}
export default App;
<Route path="/diary/" element={<Diary />} />
์ฌ์ฉํ๊ณ- URL ์
http://localhost:3000/diary/1
์์ฒญํ๋ฉด ์๋์ ๊ฐ์ด ๋์ต๋๋ค.
- ํ์ง๋ง,
<Route path="/diary/:id" element={<Diary />} />
์ฌ์ฉํ๊ณ http://localhost:3000/diary/1
์์ฒญํ๋ฉด ์๋์ ๊ฐ์ด ๋์ต๋๋ค.
- ๋ง์ฝ, ์์ ๊ฐ์ด ์์ฑ์ ํ๊ฒ ๋๋ฉด ๋ฌด์กฐ๊ฑด
/:id
๋ฅผ ๋ฐ๊ฒ ๋ค๊ณ ์๊ฐ์ ํด์,http://localhost:3000/diary/
๋ฅผ ์์ฒญํ๋ฉด ์๋ฌด๊ฒ๋ ๋์ค์ง ์์ต๋๋ค. - ์ด๋ฐ ๊ฒฝ์ฐ ๋ณ๋์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋๋ฐ ์๋์ ์ฝ๋ ์ฒ๋ผ ํ ์๋ ์์ต๋๋ค.
<Route path="/diary/:id" element={<Diary />} />
<Route path="/diary/" element={<Diary />} />
useParmas โ
- ์ ๋ฌ ๋ฐ์์ ๋ค์ด์ค๊ฒ ๋๋
Path Variable
์ ๋ชจ์์ ๊ฐ์ฒด๋ก ์ ๋ฌํ๊ฒ ๋๋๋ฐ, - ํ์ฌ
Path Variable
์ App ์ปดํฌ๋ํธ์์:id
๋ก ๋ถ๋ฅด๊ธฐ๋ก ํ์ต๋๋ค.
โ Diary.js
import { useParams } from 'react-router-dom';
const Diary = () => {
const { id } = useParams();
console.log(id);
return (
<div>
<h1>Diary</h1>
<p>์ด๊ณณ์ ์ผ๊ธฐ ์์ธ ํ์ด์ง ์
๋๋ค.</p>
</div>
);
};
export default Diary;
Query String โ
const [searchParams, setSearchParams] = useSearchParams();
searchParams
๋.get()
์ ํตํด์ ์ ๋ฌ ๋ฐ์ Query String ์ ๊บผ๋ด์ ์ธ ์ ์๋ ์ฉ๋๋ก ์ฌ์ฉsetSearchParams
๋searchParams
๋ฅผ ๋ณ๊ฒฝ ์ํค๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
โ Edit.js
import { useSearchParams } from 'react-router-dom';
const Edit = () => {
const [searchParams, setSearchParams] = useSearchParams();
const id = searchParams.get('id');
console.log('id : ', id);
const mode = searchParams.get('mode');
console.log('mode : ', mode);
return (
<div>
<h1>Edit</h1>
<p>์ด๊ณณ์ ์ผ๊ธฐ ์์ ํ์ด์ง ์
๋๋ค.</p>
<button onClick={() => setSearchParams({ who: 'hyunho' })}>
QS ๋ฐ๊พธ๊ธฐ
</button>
</div>
);
};
export default Edit;
โ Page Moving
const navigate = useNavigate();
- ํ์ด์ง๋ฅผ ์ด๋ ์ํฌ ์ ์๋ ๊ธฐ๋ฅ
useNavigate
๋ผ๋ ํ ์ ํ์ด์ง๋ฅผ ์ด๋ ์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ ํ๋ ํจ์๋ฅผ ํ๋ ๋ฐํ์ ํ๋๋ฐ, ํจ์์ ์ด๋ฆ์navigate
๋ผ๊ณ ๋ฐ๊ณnavigate
์ ์ธ์๋ก ๊ฒฝ๋ก๋ฅผ ์์ฑ์ ํ๋ฉด ํธ์ถ์ ํด์ ๊ฒฝ๋ก๋ฅผ ์ฎ๊ธธ ์ ์์ต๋๋ค.
navigate('/home');
Link
ํ๊ทธ๋ฅผ ํด๋ฆญ ์ํ์ ๊ฒฝ์ฐ์๋ ์๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
โ Edit.js
import { useNavigate, useSearchParams } from 'react-router-dom';
const Edit = () => {
const navigate = useNavigate();
const [searchParams, setSearchParams] = useSearchParams();
const id = searchParams.get('id');
console.log('id : ', id);
const mode = searchParams.get('mode');
console.log('mode : ', mode);
return (
<div>
<h1>Edit</h1>
<p>์ด๊ณณ์ ์ผ๊ธฐ ์์ ํ์ด์ง ์
๋๋ค.</p>
<button onClick={() => setSearchParams({ who: 'hyunho' })}>
QS ๋ฐ๊พธ๊ธฐ
</button>
<button
onClick={() => {
navigate('/home');
}}
>
HOME ์ผ๋ก ๊ฐ๊ธฐ
</button>
</div>
);
};
export default Edit;
<button
onClick={() => {
navigate(-1);
}}
>
๋ค๋ก๊ฐ๊ธฐ
</button>
- ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ ( Edit -> home ์ผ๋ก ๋ฐ๋๋๋ค. )
โ ์ฐธ๊ณ
'๐ Front-End > React.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ ๋ฐฐํฌ ์ค๋น ๋ฐ ๋น๋ (0) | 2022.10.25 |
---|---|
React - img (0) | 2022.10.25 |
React - Router ๊ธฐ๋ณธ (0) | 2022.10.24 |
React SPA & CSR (0) | 2022.10.24 |
Context API (0) | 2022.10.24 |