# React Fundamentals – Game Collection
# 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-endBack-end
Alles wat de gebruiker zietVerwerking achter de schermen
HTMLDatabase
CSSAPI
JavaScriptServer
Reactbehandelen 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. ```

🎮 Game Collection

Welkom bij mijn eerste React-applicatie!

Naam: Jouw naam

Studentnummer: 123456

Klas: SD4A

```
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: Bouw je eerste Game Collection pagina --- ## 🎯 Leerdoelen Na deze les kun je: - uitleggen wat JSX is; - HTML schrijven in React; - JSX aanpassen; - CSS classes gebruiken met `className`; - een eenvoudige React-pagina bouwen; - wijzigingen automatisch bekijken in de browser. --- # 📖 Wat ga je vandaag maken? Vandaag maak je de eerste versie van jouw **Game Collection**. De pagina bevat straks: ``` 🎮 Game Collection Welkom... Mijn favoriete games Minecraft FIFA Mario Kart Elden Ring ```
Dat lijkt nog eenvoudig, maar je leert vandaag de belangrijkste basis van React. > **\[Screenshot eindresultaat\]** --- # 📖 Wat is JSX? Normaal schrijf je HTML zo: ```

Game Collection

```
React gebruikt **JSX**. JSX lijkt heel erg op HTML. Toch is het geen HTML. JSX is eigenlijk JavaScript waarin HTML geschreven mag worden. React zet deze JSX later automatisch om naar gewone JavaScript-code. --- # 💡 Waarom gebruikt React JSX? Met JSX kun je veel makkelijker een pagina opbouwen. Vergelijk eens. Gewone JavaScript: ``` document.createElement(...) ```
JSX: ```

Game Collection

```
Welke leest prettiger? Vrijwel iedere React-programmeur kiest daarom voor JSX. --- # 📖 Welcome.jsx In de vorige les heb je gewerkt in: ``` resources/js/Pages/Welcome.jsx ```
Open dit bestand opnieuw. Je ziet iets dat lijkt op HTML. Dat is JSX. --- # 💡 Let op JSX lijkt op HTML. Maar er zijn kleine verschillen. HTML ``` class ```
React ``` className ```
HTML ``` for ```
React ``` htmlFor ```
Hier gaan we later verder op in. --- # 🛠️ Opdracht 1 Verander de pagina zodat deze er ongeveer zo uitziet. ```

🎮 Game Collection

Mijn favoriete games

```
Controleer of de browser automatisch wordt bijgewerkt. > **\[Screenshot browser\]** --- # 📖 Waarom verandert de browser automatisch? Misschien is het je al opgevallen. Je hoeft de browser niet opnieuw te laden. Na het opslaan zie je direct het resultaat. Dit noemen we **Hot Reloading**. Dat maakt React erg prettig om mee te werken. --- # 🛠️ Opdracht 2 Maak onder de lijst een tekst. ``` Aantal games: 4 ```
Het aantal hoeft nog niet automatisch te worden berekend. Dat leren we later. --- # 🛠️ Opdracht 3 Maak een nette opmaak. Gebruik hiervoor: - h1 - h2 - ul - li - p Voeg daarna een eenvoudige CSS-class toe. ``` className="title" ```
Maak vervolgens zelf de CSS. > **\[Screenshot resultaat\]** --- # 💾 GitHub Maak een commit. ``` Les 2 - Eerste JSX pagina ```
Synchroniseer daarna met GitHub. --- # 🤖 AI-opdracht Vraag ChatGPT: > Waarom gebruikt React JSX in plaats van gewone HTML? Vergelijk de uitleg met deze les. Noem vervolgens twee voordelen van JSX. --- # 🧠 Kennischeck 1. Wat is JSX? 2. Is JSX hetzelfde als HTML? 3. Waarom gebruikt React JSX? 4. Waarom gebruiken we `className`? 5. Wat doet Hot Reloading? --- # 📤 Inleveren - Screenshot van de browser. - Screenshot van Welcome.jsx. - Screenshot van GitHub commit. - PDF met de antwoorden. # Les 3 – Componenten: Bouw je eerste React-componenten --- ## 🎯 Leerdoelen Na deze les kun je: - uitleggen wat een React-component is; - componenten maken; - componenten importeren; - componenten gebruiken in een pagina; - de React-projectstructuur begrijpen; - een pagina opbouwen uit meerdere componenten. --- # 📖 Wat ga je vandaag maken? Tot nu toe stond alle code in één bestand. Dat werkt prima voor kleine projecten. Maar stel je eens voor dat jouw Game Collection straks bestaat uit: - Header - Footer - Zoekbalk - Favorieten - GameCards - Detailpagina - Navigatie Alles in één bestand zetten? Dat wordt al snel honderden regels code. Daarom gebruiken React-programmeurs **componenten**. Vandaag ga je jouw pagina opdelen in losse bouwstenen. Aan het einde van deze les ziet jouw project er ongeveer zo uit. ``` resources └── js ├── Components │ Header.jsx │ Footer.jsx │ GameCard.jsx │ └── Pages GameCollection.jsx ```
> **\[Afbeelding projectstructuur\]** --- # 📖 Wat is een component? Een component is een **herbruikbaar onderdeel** van een website. Je kunt het vergelijken met LEGO. Van losse LEGO-blokken bouw je een compleet huis. React werkt precies hetzelfde. Onze website bestaat straks uit kleine onderdelen. Bijvoorbeeld: ``` Game Collection │ ├── Header ├── Zoekbalk ├── GameList │ ├── GameCard │ ├── GameCard │ ├── GameCard │ └── GameCard └── Footer ```
Iedere GameCard wordt slechts één keer gemaakt. React gebruikt deze daarna zo vaak als nodig. > **\[Afbeelding Component Tree\]** --- # 💡 Waarom gebruiken we componenten? Componenten hebben veel voordelen. ✅ Je schrijft minder code. ✅ Je kunt onderdelen hergebruiken. ✅ Je project blijft overzichtelijk. ✅ Je kunt eenvoudiger samenwerken. Daarom bestaat vrijwel iedere professionele React-applicatie uit componenten. --- # 📖 Een professionele projectstructuur Tot nu toe werkte je in: ``` Welcome.jsx ```
Vanaf vandaag gaan we werken zoals professionele React-projecten zijn opgebouwd. Maak in de map: ``` resources/js ```
de volgende mappen aan. ``` Components Pages ```
> **\[Screenshot mappenstructuur\]** --- # 🛠️ Opdracht 1 – Maak de eerste component Maak een nieuw bestand. ``` resources/js/Components/Header.jsx ```
Plaats hierin de volgende code. ``` export default function Header() { return (

🎮 Game Collection

); } ```
Sla het bestand op. --- # 🛠️ Opdracht 2 – Footer maken Maak vervolgens: ``` Footer.jsx ```
``` export default function Footer() { return ( ); } ```
--- # 🛠️ Opdracht 3 – GameCard maken Maak een derde component. ``` GameCard.jsx ```
``` export default function GameCard() { return (
Minecraft
); } ```
Nog even geduld. In de volgende lessen gaan we deze component veel slimmer maken. --- # 🛠️ Opdracht 4 – Nieuwe pagina maken Maak nu: ``` resources/js/Pages/GameCollection.jsx ```
Plaats hierin de volgende code. ``` import Header from "../Components/Header"; import Footer from "../Components/Footer"; import GameCard from "../Components/GameCard"; export default function GameCollection() { return ( <>