Waarom React Router?
Naast componenten ga je ook pagina's maken in React. Deze pagina's moeten met elkaar verbonden worden zodat je een volledige website hebt.
In normaal HTML gebruik je de <a> tag om pagina's te linken:
<!-- Gewone HTML -->
<a href="about.html">Over Ons</a>
In React werkt dat niet! Daarvoor gebruik je React Router.
Installeren
Om React Router te gebruiken, moet je dit eerst installeren via je terminal:
npm i react-router-dom
Dit hoef je maar 1 keer te doen per project!
Stap 1: Pages Maken
Maak in de src-folder een nieuwe folder aan genaamd Pages (met hoofdletter):
src/
├── components/
├── pages/ ← Nieuwe folder
│ ├── Home.jsx
│ ├── About.jsx
│ ├── Contact.jsx
│ └── NoPage.jsx
└── App.jsx
React ziet dit ook gewoon als een component dus met de shortcut sfc zet je de code klaar.
Home.jsx:
// src/Pages/Home.jsx
const Home = () => {
return (
<div>
<h1>Home Pagina</h1>
<p>Welkom op onze website!</p>
</div>
);
};
export default Home;
About.jsx:
// src/Pages/About.jsx
const About = () => {
return (
<div>
<h1>Over Ons</h1>
<p>Hier staat informatie over ons bedrijf.</p>
</div>
);
};
export default About;
NoPage.jsx (404 pagina):
// src/Pages/NoPage.jsx
const NoPage = () => {
return (
<div>
<h1>404 - Pagina niet gevonden</h1>
<p>Sorry, deze pagina bestaat niet.</p>
</div>
);
};
export default NoPage;
Stap 2: Router Opzetten in App.jsx
Om de router op te zetten ga je naar App.jsx. Hier importeer je alles wat je nodig hebt:
import { BrowserRouter, Route, Routes } from 'react-router-dom';
import Home from './Pages/Home';
import About from './Pages/About';
Je begint met de <BrowserRouter> en daarna definieer je de <Routes>. In de Routes zit de <Route> wat aangeeft in welke path de pagina's komen:
// src/App.jsx
import { BrowserRouter, Route, Routes } from 'react-router-dom';
import Home from './Pages/Home';
import About from './Pages/About';
import NoPage from './Pages/NoPage';
function App() {
return (
<BrowserRouter>
<Routes>
<Route index element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="*" element={<NoPage />} />
</Routes>
</BrowserRouter>
);
}
export default App;
Uitleg:
- De home pagina is altijd de index pagina daarom krijgt het de
indexattribute - Als laatst heb je
path="*", dit vangt alle paden die nog niet zijn gemaakt waardoor je een 404 voor je scherm krijgt
Nieuwe Pagina Toevoegen
Elke keer wanneer je een nieuwe pagina maakt, doe je dit:
1. Maak de pagina component:
// src/Pages/Contact.jsx
const Contact = () => {
return (
<div>
<h1>Contact</h1>
<p>Neem contact met ons op!</p>
</div>
);
};
export default Contact;
2. Voeg Route toe in App.jsx:
import Contact from './Pages/Contact';
// In de Routes:
<Route path="contact" element={<Contact />} />
3. Voeg Link toe in Navigation.jsx:
<li><Link to="/contact">Contact</Link></li>
Samenvatting:
- Maak pagina component in Pages folder
- Import en voeg Route toe in App.jsx
- Voeg Link toe in Navigation.jsx