Skip to main content

REACT | Basis


  • React

    Basis

    Les 1 – Introductie React & Ontwikkelomgeving


    🎯 Leerdoelen

    Na deze les kun je:

    • uitleggen wat React is;
    • uitleggen waarom React wordt gebruikt;
    • het verschil beschrijven tussen Front-end en Back-end;
    • een Laravel Breeze React-project installeren;
    • de belangrijkste React-bestanden herkennen;
    • je eerste React-pagina aanpassen;
    • je project opslaan in GitHub.

    📖 Wat ga je bouwen?

    Tijdens deze module werk je aan één project:

    🎮 Game Collection

    Je bouwt stap voor stap een moderne webapplicatie waarin gebruikers games kunnen bekijken, zoeken en beheren.

    In iedere les breid je dezelfde applicatie verder uit.

    Aan het einde van deze module kun je onder andere:

    • 🎮 Games weergeven
    • 🔍 Games zoeken
    • ❤️ Favorieten markeren
    • 📄 Detailpagina's maken
    • 🧩 Werken met componenten
    • ⚡ Dynamische React-applicaties bouwen

    [Afbeelding eindresultaat Game Collection]


    📖 Waarom React?

    Stel je voor dat je de Game Collection maakt met alleen HTML.

    Voor iedere game zou je opnieuw moeten schrijven:

    • titel;
    • afbeelding;
    • platform;
    • knop;
    • beschrijving.

    Heb je 200 games?

    Dan schrijf je dezelfde code 200 keer.

    Dat is natuurlijk niet handig.

    React lost dit probleem op.

    React maakt gebruik van componenten.

    Een component maak je één keer.

    Daarna gebruik je hem zo vaak als je wilt.


    💡 Wat is React?

    React is een JavaScript-library waarmee je moderne gebruikersinterfaces bouwt.

    React is ontwikkeld door Meta (Facebook).

    React wordt gebruikt door onder andere:

    • Facebook
    • Instagram
    • Netflix
    • Discord
    • Airbnb

    React is tegenwoordig één van de meest gebruikte technieken voor Front-end ontwikkeling.

    [Afbeelding React logo]


    📖 Componenten

    Een React-applicatie bestaat uit kleine bouwstenen.

    Deze noemen we componenten.

    Onze Game Collection zou er bijvoorbeeld zo uit kunnen zien.

    App
    
    ├── Header
    
    ├── SearchBar
    
    ├── GameList
    
    │ ├── GameCard
    
    │ ├── GameCard
    
    │ ├── GameCard
    
    │ └── GameCard
    
    └── Footer


    Iedere GameCard wordt slechts één keer gemaakt.

    React hergebruikt deze component daarna automatisch.

    Dat scheelt enorm veel programmeerwerk.

    [Afbeelding componentenboom]


    📖 Front-end versus Back-end

    Een webapplicatie bestaat meestal uit twee delen.

    Front-end Back-end
    Alles wat de gebruiker ziet Verwerking achter de schermen
    HTML Database
    CSS API
    JavaScript Server
    React behandelen we in deel 2

    Tijdens deze module richten we ons uitsluitend op de Front-end.

    In de vervolgreeks koppelen we React aan een Back-end.

    [Afbeelding Front-end vs Back-end]


    💡 Wist je dat?

    React gebruikt een techniek die Virtual DOM heet.

    Hierdoor wordt niet de hele pagina opnieuw opgebouwd.

    Alleen het onderdeel dat verandert wordt opnieuw weergegeven.

    Daardoor voelt een React-applicatie snel en soepel aan.


    🛠️ Opdracht 1 – Ontwikkelomgeving installeren

    Tijdens deze module gebruiken we een Laravel Breeze React-project.

    Waarom?

    Omdat we in de volgende module zonder opnieuw te beginnen verder kunnen werken.

    Let op: Tijdens deze module hoef je niets van Laravel te kennen. We gebruiken Laravel alleen als basis waarop React draait.

    Stap 1

    Maak een nieuw Laravel-project.

    laravel new game-collection


    Stap 2

    Open het project in Visual Studio Code.

    Stap 3

    Installeer React.

    php artisan breeze:install react


    Kies steeds de standaardopties.

    Stap 4

    Installeer alle packages.

    npm install


    Stap 5

    Start de ontwikkelomgeving.

    Terminal 1

    php artisan serve


    Terminal 2

    npm run dev


    Open vervolgens:

    http://127.0.0.1:8000


    Als alles goed is zie je de standaard Laravel Breeze React-pagina.

    [Screenshot Laravel Breeze React startpagina]


    🛠️ Opdracht 2 – Eerste React-pagina aanpassen

    Open het bestand:

    resources/js/Pages/Welcome.jsx


    Pas de pagina aan zodat deze er ongeveer zo uitziet.

    <h1>🎮 Game Collection</h1>
    
    <h2>Welkom bij mijn eerste React-applicatie!</h2>
    
    <p>Naam: Jouw naam</p>
    
    <p>Studentnummer: 123456</p>
    
    <p>Klas: SD4A</p>


    Sla het bestand op.

    Controleer of de browser automatisch wordt bijgewerkt.

    [Screenshot aangepaste Welcome.jsx]


    💾 GitHub

    Nu de applicatie werkt, slaan we de eerste werkende versie op.

    Open Source Control in Visual Studio Code.

    Maak een commit met het bericht:

    Les 1 - React ontwikkelomgeving gereed


    Voer daarna een Sync uit zodat je project ook op GitHub staat.

    Vanaf nu maak je na iedere werkende opdracht een commit.


    🤖 AI-opdracht

    Gebruik ChatGPT.

    Geef de volgende prompt:

    Leg uit wat React is alsof je het uitlegt aan een eerstejaars mbo Software Developer.

    Vergelijk de uitleg van ChatGPT met deze les.

    Beantwoord daarna de volgende vraag:

    Welke uitleg vond jij het duidelijkst en waarom?

    Maximaal 100 woorden.


    🧠 Kennischeck

    Beantwoord de onderstaande vragen.

    1. Wat is React?
    2. Waarom gebruiken veel bedrijven React?
    3. Wat is een component?
    4. Waarom zijn componenten handig?
    5. Wat is het verschil tussen Front-end en Back-end?
    6. Waarom gebruiken wij een Laravel Breeze React-project?
    7. In welke map ga je tijdens deze module het meeste werken?

    📤 Inleveren

    Lever de volgende onderdelen in:

      • 📷 Screenshot van de draaiende applicatie.
      • 📷 Screenshot van de aangepaste Welcome.jsx.
      • 📷 Screenshot van de eerste GitHub-commit.
      • 📄 PDF of TXT met de antwoorden op de kennischeck.
      • 📄 De uitwerking van de AI-opdracht.


    Les 2 - JSX en Componenten

    🎯 Leerdoelen

    Na deze les:

    • Je begrijpt wat JSX is.
    • Je weet waarom React componenten gebruikt.
    • Je kunt zelf een component maken.
    • Je kunt gegevens doorgeven met props.

    💡 Uitleg

    Terugblik

    In de vorige les heb je een React-project gemaakt en gestart.

    Vandaag gaan we voor het eerst zelf React-code schrijven.

    Je leert drie belangrijke onderdelen van React:

    • JSX
    • Componenten
    • Props

    Deze onderdelen gebruik je straks in bijna iedere React-applicatie.


    Wat is JSX?

    Wanneer je React-code ziet, lijkt deze vaak op HTML.

    Bijvoorbeeld:

    function App() {
      return (
        <h1>Welkom bij React!</h1>
      );
    }


    Toch is dit geen HTML.

    Dit noemen we JSX.

    JSX staat voor:

    JavaScript XML

    Je kunt JSX zien als een combinatie van JavaScript en HTML.

    React zet deze code automatisch om naar gewone HTML die de browser begrijpt.


    Waarom gebruikt React JSX?

    Met alleen JavaScript zou je een pagina als volgt moeten maken:

    const titel = document.createElement("h1");
    titel.textContent = "Welkom bij React!";
    document.body.appendChild(titel);


    Dat werkt prima, maar bij grote websites wordt deze code al snel onoverzichtelijk.

    Met JSX schrijf je dezelfde pagina veel eenvoudiger:

    <h1>Welkom bij React!</h1>


    Dat leest veel prettiger.


    JSX lijkt op HTML

    Veel HTML-tags werken precies hetzelfde.

    Bijvoorbeeld:

    <h1>Welkom</h1>
    
    <p>Dit is een paragraaf.</p>
    
    <ul>
        <li>React</li>
        <li>JavaScript</li>
    </ul>


    Je kunt dus bijna alle HTML gebruiken die je al kent.


    Er zijn wel een paar verschillen

    Verschil 1 – class wordt className

    In HTML schrijf je:

    <h1 class="title">


    In React schrijf je:

    <h1 className="title">


    Waarom?

    Omdat class een gereserveerd woord is in JavaScript.

    Daarom gebruikt React className.

    Dit is één van de meest gemaakte beginnersfouten.


    Verschil 2 – JavaScript tussen accolades

    In JSX kun je JavaScript gebruiken.

    Dat doe je tussen:

    { }


    Bijvoorbeeld:

    function App() {
    
        const naam = "Lisa";
    
        return (
            <h1>Welkom {naam}</h1>
        );
    
    }


    De browser laat zien:

    Welkom Lisa



    Wat is een component?

    Een React-app bestaat uit kleine onderdelen.

    Deze onderdelen noemen we componenten.

    Bijvoorbeeld een webshop.

    Website
    
    ├── Header
    ├── Menu
    ├── Productlijst
    ├── Winkelwagen
    └── Footer


    Elk onderdeel heeft zijn eigen bestand.

    Dat maakt een applicatie overzichtelijk.


    Waarom componenten?

    Stel dat je op iedere pagina hetzelfde menu gebruikt.

    Zonder componenten moet je dezelfde code steeds opnieuw schrijven.

    Met React maak je één Menu-component.

    Daarna gebruik je deze overal.

    <Menu />


    Pas je het menu aan?

    Dan verandert het automatisch op iedere pagina.


    Je eerste component

    Maak in de map src een nieuwe map.

    src
    
    components


    Maak daarin een bestand:

    Header.jsx


    Plaats hierin de volgende code.

    function Header() {
    
        return (
            <header>
                <h1>🎮 Game Collection</h1>
            </header>
        );
    
    }
    
    export default Header;


    Deze component laat alleen een titel zien.


    Een component gebruiken

    Open nu App.jsx.

    Importeer de component.

    import Header from "./components/Header";


    Gebruik de component vervolgens.

    function App() {
    
        return (
            <>
                <Header />
            </>
        );
    
    }
    
    export default App;


    De titel verschijnt nu in de browser.


    Wat zijn props?

    Een component is vaak herbruikbaar.

    Daarom kunnen we gegevens meegeven.

    Deze gegevens noemen we props.

    Props kun je vergelijken met de parameters van een functie.


    Zonder props

    function Header() {
    
        return <h1>Game Collection</h1>;
    
    }


    Deze titel verandert nooit.


    Met props

    Pas Header.jsx aan.

    function Header(props) {
    
        return (
            <h1>{props.title}</h1>
        );
    
    }
    
    export default Header;


    Gebruik de component nu zo.

    <Header title="🎮 Mijn Game Collection" />


    Je kunt nu zelf bepalen welke titel wordt weergegeven.


    Nog een voorbeeld

    Je kunt meerdere props gebruiken.

    function GameCard(props) {
    
        return (
    
            <>
                <h2>{props.title}</h2>
                <p>Platform: {props.platform}</p>
            </>
    
        );
    
    }
    
    export default GameCard;


    Gebruik de component.

    <GameCard
        title="Minecraft"
        platform="PC"
    />


    De browser toont:

    Minecraft
    
    Platform: PC


    Zo kun je dezelfde component steeds opnieuw gebruiken.


    🛠️ Opdracht

    Maak een map:

    src/components


    Maak daarin twee componenten.

    Header.jsx
    
    Footer.jsx


    Gebruik beide componenten in App.jsx.


    Opdracht 2

    Maak een component:

    GameCard.jsx


    De component moet twee props gebruiken:

    • title
    • platform

    Gebruik de component drie keer.

    Bijvoorbeeld:

    <GameCard
        title="Minecraft"
        platform="PC"
    />
    
    <GameCard
        title="Mario Kart"
        platform="Nintendo Switch"
    />
    
    <GameCard
        title="EA FC 26"
        platform="PlayStation 5"
    />



    🤖 AI-opdracht

    Vraag ChatGPT:

    Leg uit wat een React component is alsof je het uitlegt aan een mbo-student.

    Lees het antwoord.

    Schrijf daarna zelf in maximaal 75 woorden uit wat volgens jou een component is.

    Gebruik niet letterlijk de tekst van AI.


    🧠 Reflectie

    Beantwoord de vragen.

    1. Wat is JSX?
    2. Waarom gebruikt React componenten?
    3. Waarom schrijf je className in plaats van class?
    4. Wat zijn props?
    5. Wat is het voordeel van props ten opzichte van vaste tekst?

    📤 Inleveren

    Lever in:

    • Een screenshot van jouw React-app.
    • De bestanden:
      • Header.jsx
      • Footer.jsx
      • GameCard.jsx
      • App.jsx
    • De antwoorden op de reflectievragen (PDF of TXT).



    Les 3 - useState

    🎯 Leerdoelen

    • useState gebruiken
    • State wijzigen
    • Events afhandelen

    💡 Uitleg

    • useState
    • onClick
    • Rendering

    🛠️ Opdracht

    Maak:

    ✔ Teller

    Aantal games:
    0
    
    [ + ]
    
    [ - ]


    Daarna:

    Favoriet aan/uit

    ❤️

    🤍

    🧠 Reflectie

    Waarom gebruiken we state?


    Les 4 - Lijsten met map()

    🎯 Leerdoelen

    • Arrays tonen
    • map()
    • key

    💡 Uitleg

    Array →

    [
    {
    title:"Minecraft"
    }
    ]


    → GameCards

    🛠️ Opdracht

    Toon vijf games.

    Extra:

    voeg afbeelding toe.


    Les 5 - Formulieren

    🎯 Leerdoelen

    • Input
    • onChange
    • Zoeken

    🛠️ Opdracht

    Maak een zoekveld.

    Zoeken:
    
    Minecraft


    Alleen passende games blijven zichtbaar.


    Les 6 - JSON laden

    🎯 Leerdoelen

    • JSON begrijpen
    • fetch()
    • useEffect()

    💡 Uitleg

    games.json


    in

    public/


    Inladen met

    fetch()


    🛠️ Opdracht

    Laad:

    games.json


    Toon alle games.


    Les 7 - Details tonen

    🎯 Leerdoelen

    • State combineren
    • Eén geselecteerde game tonen

    🛠️ Opdracht

    Klik op een game.

    Rechts verschijnt

    Naam
    
    Platform
    
    Genre
    
    Beschrijving



    Les 8 - Favorieten

    🎯 Leerdoelen

    • Arrays aanpassen
    • State uitbreiden

    🛠️ Opdracht

    Maak

    ⭐ Favoriet

    Filter:

    Alle
    
    Favorieten



    Les 9 - AI Challenge

    🎯 Leerdoelen

    AI gebruiken.

    🛠️ Opdracht

    Laat ChatGPT een React-component maken.

    Bijvoorbeeld:

    Rating sterren
    
    of
    
    Dark Mode
    
    of
    
    Sorteerfunctie


    Verbeter de code zelf.

    Lever ook je prompt in.


    Les 10 - Eindopdracht

    Maak jouw eigen Game Collection.

    Verplicht:

    ✅ Header

    ✅ Componenten

    ✅ JSON

    ✅ useState

    ✅ useEffect

    ✅ Zoekfunctie

    ✅ Favorieten

    Keuze:

    ⭐ Dark Mode

    ⭐ Eigen styling

    ⭐ React Icons

    ⭐ Categorieën

    ⭐ Eigen JSON


    Bonuslessen

    Les 11

    React Router

    /
    
    Games
    
    /game/3



    Les 12

    Externe API

    Bijvoorbeeld:

    https://dummyjson.com/products


    of

    RAWG Game API


    Studenten leren echte API's gebruiken.


    AI-opdracht in iedere les

    Net als bij SQL.

    Bijvoorbeeld:

    🤖 AI-opdracht

    Vraag ChatGPT:

    Leg uit wat useState doet alsof je het uitlegt aan een eerstejaars mbo-student.

    Controleer daarna zelf of de uitleg klopt.