Reageer-router
Create React App bevat geen paginarouting.
React Router is de meest populaire oplossing.
React-router toevoegen
Om React Router aan uw applicatie toe te voegen, voert u dit uit in de terminal vanuit de hoofdmap van de applicatie:
npm i -D react-router-dom
Opmerking: deze tutorial gebruikt React Router v6.
Als u een upgrade uitvoert vanaf v5, moet u de vlag @latest gebruiken:
npm i -D react-router-dom@latest
Mapstructuur
Om een applicatie met meerdere paginaroutes te maken, beginnen we eerst met de bestandsstructuur.
Binnen de src
map maken we een map met de naam
pages
met verschillende bestanden:
src\pages\
:
Layout.js
Home.js
Blogs.js
Contact.js
NoPage.js
Elk bestand bevat een zeer eenvoudige React-component.
Basisgebruik
Nu zullen we onze router in ons index.js
bestand gebruiken.
Voorbeeld
Gebruik React Router om naar pagina's te routeren op basis van URL:
index.js
:
import ReactDOM from "react-dom";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Layout from "./pages/Layout";
import Home from "./pages/Home";
import Blogs from "./pages/Blogs";
import Contact from "./pages/Contact";
import NoPage from "./pages/NoPage";
export default function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Home />} />
<Route path="blogs" element={<Blogs />} />
<Route path="contact" element={<Contact />} />
<Route path="*" element={<NoPage />} />
</Route>
</Routes>
</BrowserRouter>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
Voorbeeld uitgelegd
We verpakken onze inhoud eerst met <BrowserRouter>
.
Vervolgens definiëren we onze <Routes>
. Een applicatie kan meerdere <Routes>
. Ons basisvoorbeeld gebruikt er maar één.
<Route>
s kunnen worden genest. De eerste <Route>
heeft een pad van /
en geeft de Layout
component weer.
De geneste <Route>
s erven en worden toegevoegd aan de bovenliggende route. Dus het blogs
pad wordt gecombineerd met de ouder en wordt
/blogs
.
De Home
componentroute heeft geen pad maar een
index
attribuut. Dat specificeert deze route als de standaardroute voor de bovenliggende route, namelijk /
.
Als u de path
to *
instelt, fungeert deze als een verzamelnaam voor niet-gedefinieerde URL's. Dit is geweldig voor een 404-foutpagina.
Gecertificeerd!
$95 INSCHRIJVEN
Pagina's / Componenten
De Layout
component heeft
<Outlet>
en <Link>
elementen.
De <Outlet>
rendert de huidige geselecteerde route.
<Link>
wordt gebruikt om de URL in te stellen en de browsegeschiedenis bij te houden.
Telkens wanneer we naar een intern pad linken, gebruiken we in <Link>
plaats van <a href="">
.
De "lay-outroute" is een gedeeld onderdeel dat gemeenschappelijke inhoud op alle pagina's invoegt, zoals een navigatiemenu.
Layout.js
:
import { Outlet, Link } from "react-router-dom";
const Layout = () => {
return (
<>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/blogs">Blogs</Link>
</li>
<li>
<Link to="/contact">Contact</Link>
</li>
</ul>
</nav>
<Outlet />
</>
)
};
export default Layout;
Home.js
:
const Home = () => {
return <h1>Home</h1>;
};
export default Home;
Blogs.js
:
const Blogs = () => {
return <h1>Blog Articles</h1>;
};
export default Blogs;
Contact.js
:
const Contact = () => {
return <h1>Contact Me</h1>;
};
export default Contact;
NoPage.js
:
const NoPage = () => {
return <h1>404</h1>;
};
export default NoPage;