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 index attribute
  • 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:

  1. Maak pagina component in Pages folder
  2. Import en voeg Route toe in App.jsx
  3. Voeg Link toe in Navigation.jsx