조금 더 사이트를 동적으로 만들고 싶다면 react-router-dom사용이 필수적이다.
여러 기능들이 있지만 많이 쓰는 요소만 정리한다.
npm install react-router-dom
index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter, Routes } from 'react-router-dom';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
App.js
import { Route, Routes } from "react-router-dom";
import FirstPage from "./firstPage";
import { PrivacyPolicy, TermsOfService } from "./footerMenu";
import { Login } from "./login";
import Dashboard from "./dashboard";
function App() {
return (
<div>
<Routes>
<Route path="/" element={<FirstPage/>}></Route>
<Route path="/login" element={<Login/>}></Route>
<Route path="/dashboard" element={<Dashboard/>}></Route>
<Route path="/terms-of-service" element={<TermsOfService/>}></Route>
<Route path="/privacy-policy" element={<PrivacyPolicy/>}></Route>
</Routes>
</div>
);
}
export default App;
이런식으로 Routes가 Route를 감싸는 형식으로 존재해야 한다.
import { Link } from 'react-router-dom'
.
.
.
<Link to="/privacy-policy">Privacy Policy</Link>
이런식으로 a태그 자리에 Link를 쓰면 된다.
import { useNavigate } from 'react-router-dom';
.
.
.
const navigate = useNavigate();
useEffect(() => {
axios.get('/api/auth/test')
.then(response => {
console.log(response)
})
.catch(error => {
console.error('Authentication error:', error);
navigate('/login');
});
}, [navigate]);