router 패키지 추가
yarn add react-router-dom
yarn add --dev cross-env
페이지 1 : src/pages/Project.js
function Project() {
return (
<div>
<div>project setting & loading</div>
</div>
);
}
export default Project;
페이지 2 : src/pages/Host.js
function Host() {
return (
<div>
<form>
<label For="address">address</label>
<input name="address"></input>
<label For="port">port</label>
<input name="port"></input>
</form>
</div>
);
}
export default Host;
페이지 3 : src/pages/HostAnalysis.js
function HostAnalysis() {
return (
<div>host: </div>
);
}
export default HostAnalysis;
Navigation : src/pages/Root.js
import React from "react";
import {Link, Route, BrowserRouter, Routes, Outlet} from "react-router-dom";
export default function Root() {
return (
<div>
<Link to="/projects">
<button>Projects</button>
</Link>
<Link to="/host">
<button>Host</button>
</Link>
<Link to="/hostAnalysis">
<button>HostAnalysis</button>
</Link>
<Outlet/>
</div>
);
};
에러 페이지 : src/pages/NotFound.js
import { useRouteError, Link, Routes, Route, BrowserRouter } from "react-router-dom";
import Root from "./Root";
function NotFound() {
const error = useRouteError();
console.error(error);
return (
<BrowserRouter>
<div id="not-found-root">
<h1>Oops!</h1>
<p>Sorry, an unexpected error has occured.</p>
<p><i>{error.statusText || error.message}</i></p>
</div>
<Routes>
<Link to="/">go home.</Link>
<Route path="/" component={<Root/>}>root</Route>
</Routes>
</BrowserRouter>
);
}
export default NotFound;
Route : index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import {
createBrowserRouter
, RouterProvider
, Route
, createRoutesFromElements
, BrowserRouter
} from "react-router-dom"
import Root from "./pages/Root";
import NotFound from './pages/NotFound';
import App from './App';
import Project from "./pages/Project";
import Host from "./pages/Host";
import HostAnalysis from "./pages/HostAnalysis";
const router = createBrowserRouter(
createRoutesFromElements(
<Route path="/" element={<Root/>} errorElement={<NotFound/>}>
<Route errorElement={<NotFound/>}>
<Route path="/projects" element={<Project/>}></Route>
<Route path="/host" element={<Host/>}></Route>
<Route path="/hostAnalysis" element={<HostAnalysis/>}></Route>
</Route>
</Route>
)
);
const documentBodyRoot = ReactDOM.createRoot(document.getElementById('root'));
documentBodyRoot.render(
<React.StrictMode>
<RouterProvider router={router}></RouterProvider>
</React.StrictMode>
);
답글 남기기