React 1 โ€“ 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 nieuw React-project maken met Vite; 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. Aan het einde van deze module kun je onder andere: ๐ŸŽฎ Games weergeven ๐Ÿ” Games zoeken โค๏ธ Favorieten toevoegen ๐Ÿ“„ Detailpagina's maken ๐Ÿงฉ Componenten bouwen โšก Dynamische React-applicaties ontwikkelen ๐Ÿ“– 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. ๐Ÿ› ๏ธ Benodigdheden Voor deze module heb je nodig: Visual Studio Code Node.js (LTS-versie) Git GitHub-account Controleer of alles correct is geรฏnstalleerd. Open een terminal en voer uit: node -v npm -v git --version Wanneer alle versies zichtbaar zijn, ben je klaar om te beginnen. ๐Ÿ“– 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. ๐Ÿ“– 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 Laravel (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. ๐Ÿ› ๏ธ Opdracht 1 โ€“ React installeren Tijdens deze module gebruiken we Vite . Vite is de officiรซle manier om een nieuw React-project te maken. Stap 1 Maak een nieuw React-project. npm create vite@latest game-collection -- --template react Which linter to use? โœ… ESLint ๐Ÿ’ก Waarom ESLint? ESLint is de meest gebruikte codecontrole voor React-projecten. Het helpt je om fouten sneller te ontdekken en zorgt ervoor dat je code volgens de gangbare React-standaarden wordt geschreven. ๐Ÿ’ก Waarom gebruiken we Vite? Om met React te kunnen werken hebben we een ontwikkelomgeving nodig. Tegenwoordig wordt bijna altijd Vite gebruikt. Vite is: Sneller, moderner, eenvoudiger, de standaard binnen nieuwe React-projecten. Daarom gebruiken wij Vite tijdens deze module. 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. Stap 2 Open het project in Visual Studio Code. Zorg ervoor dat je de juiste directory hebt geopend. Ga naar de projectmap. cd game-collection Stap 3 Installeer alle packages. npm install Stap 4 Start de ontwikkelomgeving in dien je het niet is gestart. Terminal in VScode npm run dev Je ziet nu ongeveer: > npx > create-vite game-collection --template react โ”‚ โ—‡ Which linter to use? โ”‚ ESLint โ”‚ โ—‡ Install with npm and start now? โ”‚ Yes โ”‚ โ—‡ Scaffolding project in C:\REACT-1\game-collection... โ”‚ โ—‡ Installing dependencies with npm... added 135 packages, and audited 136 packages in 8s 31 packages are looking for funding run `npm fund` for details found 0 vulnerabilities โ”‚ โ—‡ Starting dev server... > game-collection@0.0.0 dev > vite VITE v8.1.4 ready in 428 ms โžœ Local: http://localhost:5173/ โžœ Network: use --host to expose โžœ press h + enter to show help Als alles goed is zie je via de link http://localhost:5173/ย  de standaard React pagina ๐Ÿ› ๏ธ Opdracht 2 โ€“ Verken de projectstructuur React-projecten bestaan uit verschillende mappen. Zoek onderstaande bestanden en mappen op in je verkenner. | Bestand | Functie | | -------------- | ------------------------------------------ | | `src` | Hier staat bijna alle React-code | | `App.jsx` | De hoofdcomponent van de applicatie | | `main.jsx` | Startpunt van de React-app | | `public` | Afbeeldingen en andere statische bestanden | | `package.json` | Overzicht van alle packages | In deze module ga je vooral hieraan werken. ๐Ÿ› ๏ธ Opdracht 3 โ€“ Pas de eerste React-pagina aan Open: src/App.jsx Vervang de bestaande inhoud door: Vul je eigen naam, studentennummer en klas in. import "./App.css"; function App() { return ( <>

๐ŸŽฎ Game Collection

Welkom bij mijn eerste React-applicatie!

Naam: Jouw naam

Studentnummer: Jouw studentnummer

Klas: Jouw klas

); } export default App; Sla het bestand op. De browser wordt automatisch bijgewerkt. ๐Ÿ’ก Wist je dat? React past de browser automatisch aan zodra je een bestand opslaat. Dit heet Hot Reloading . Daardoor zie je direct het resultaat van je wijzigingen, zonder de pagina handmatig te verversen. ๐Ÿ’พ GitHub Nu de applicatie werkt is het tijd om de eerste werkende versie op te slaan. Open Source Control in Visual Studio Code. Maak een commit met het bericht: Les 1 - React omgeving gereed Synchroniseer daarna met GitHub. Vanaf nu maak je na iedere werkende opdracht een nieuwe commit. ๐Ÿค– AI-opdracht Gebruik ChatGPT. Prompt: Leg uit wat React is alsof je het uitlegt aan een eerstejaars mbo Software Developer. Vergelijk de uitleg met deze les. Beschrijf in maximaal 100 woorden welke uitleg jij duidelijker vond. ๐Ÿง  Kennischeck Wat is React? Waarom gebruiken veel bedrijven React? Wat is het verschil tussen Front-end en Back-end? Waarom gebruiken we Vite? Wat is de functie van App.jsx ? Wat is de functie van main.jsx ? Waarom gebruiken we GitHub tijdens deze module? ๐Ÿ“ค Inleveren Lever de volgende onderdelen in via Canvas. ๐Ÿ“ท Screenshot van de draaiende React-applicatie. ๐Ÿ“ท Screenshot van App.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 de eerste eigen opmaak ๐ŸŽฏ Leerdoelen Na deze les kun je: uitleggen wat JSX is; het verschil beschrijven tussen HTML en JSX; de standaard Vite-opmaak vervangen; een eenvoudige eigen CSS-opmaak maken; className gebruiken in React. ๐Ÿ“– Wat ga je vandaag maken? In de vorige les heb je jouw eerste React-applicatie gemaakt met Vite. Vandaag ga je de applicatie verder uitbreiden. Je leert wat JSX is en vervangt de standaard Vite-opmaak door een eigen eenvoudige vormgeving. Vanaf deze les werken alle studenten met dezelfde basis voor de rest van de module. ๐Ÿ“– Wat is JSX? React gebruikt JSX . JSX lijkt heel erg op HTML, maar het is geen HTML. Eigenlijk is JSX gewone JavaScript waarin je HTML mag schrijven. React zet deze code tijdens het uitvoeren automatisch om naar JavaScript. Bijvoorbeeld:

๐ŸŽฎ Game Collection

Dit ziet eruit als HTML, maar is JSX. ๐Ÿ’ก JSX lijkt op HTML, maar... Er zijn een paar kleine verschillen. HTML JSX class className for htmlFor onclick onClick Tijdens deze module gebruiken we vooral: className ๐Ÿ› ๏ธ Opdracht 1 โ€“ De standaard Vite-opmaak vervangen Vite maakt automatisch een voorbeeldopmaak. Deze is handig voor de standaard React-pagina, maar voor onze eigen applicatie willen we een eenvoudige en overzichtelijke basis. Open: src/index.css Vervang de volledige inhoud door: * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Arial, Helvetica, sans-serif; background-color: #f5f5f5; } Sla het bestand op. Open daarna: src/App.css Vervang ook hier de volledige inhoud door: .container { max-width: 800px; margin: 40px auto; background: white; padding: 30px; border-radius: 10px; box-shadow: 0 0 10px rgba(0,0,0,.1); } .title { color: #6e25eb; } .games { margin-top: 30px; } ul { padding-left: 20px; } li { margin-bottom: 8px; } Sla ook dit bestand op. ๐Ÿ’ก Waarom doen we dit? Zo werken alle studenten met dezelfde eenvoudige CSS. Dat maakt de voorbeelden uit deze cursus overzichtelijk en voorkomt verwarring met de standaard Vite-opmaak. ๐Ÿ› ๏ธ Opdracht 2 โ€“ Gebruik de CSS in React Open: src/App.jsx Controleer of bovenaan het bestand staat: import "./App.css"; Pas daarna de JSX aan. Plaats de bestaande inhoud van je pagina binnen onderstaande structuur.

๐ŸŽฎ Game Collection

Welkom bij mijn eerste React-applicatie!

Naam: Jouw naam

Studentnummer: Jouw studentnummer

Klas: Jouw klas

Sla het bestand op. Controleer of de pagina nu een witte achtergrond heeft en de titel paars is geworden. ๐Ÿ’ก Experimenteer met CSS CSS bepaalt hoe jouw website eruitziet. Probeer de onderstaande eigenschappen eens aan te passen. Verander de kleur van de titel. Pas de breedte van de container aan. Geef de pagina een andere achtergrondkleur. Maak de ruimte tussen de onderdelen groter of kleiner. Sla iedere wijziging op. Door Hot Reloading zie je direct het resultaat in de browser. ๐Ÿ’ก Wist je dat? React vernieuwt de browser automatisch zodra je een bestand opslaat. Dit noemen we Hot Reloading . Hierdoor kun je snel experimenteren met je code zonder steeds de pagina opnieuw te laden. ๐Ÿ’พ GitHub Maak een commit met het bericht: Les 2 - Eigen CSS toegepast Synchroniseer daarna met GitHub. ๐Ÿค– AI-opdracht Gebruik ChatGPT. Prompt: Leg uit wat JSX is en waarom React hiervoor kiest in plaats van gewone HTML. Beschrijf daarna in maximaal 100 woorden wat volgens jou het belangrijkste voordeel van JSX is. ๐Ÿง  Kennischeck Wat is JSX? Waarom is JSX geen gewone HTML? Waarom gebruiken we className in plaats van class ? Waarom vervangen we de standaard Vite CSS? Wat is de functie van App.css ? Wat is de functie van index.css ? Wat is Hot Reloading? ๐Ÿ“ค Inleveren Lever de volgende onderdelen in via Canvas. ๐Ÿ“ท Screenshot van de aangepaste Game Collection. ๐Ÿ“ท Screenshot van App.jsx . ๐Ÿ“ท Screenshot van App.css . ๐Ÿ“ท Screenshot van de GitHub-commit. ๐Ÿ“„ PDF of TXT met de antwoorden op de kennischeck. ๐Ÿ“„ De uitwerking van de AI-opdracht. Les 3 โ€“ Componenten: Bouwstenen van React ๐ŸŽฏ Leerdoelen Na deze les kun je: uitleggen wat een component is; uitleggen waarom React componenten gebruikt; een component maken; een component importeren; een component hergebruiken. ๐ŸŽฎ 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. [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: Header GameList GameCard Footer Iedere GameCard wordt slechts รฉรฉn keer gemaakt. React gebruikt deze daarna zo vaak als nodig. [Afbeelding Component Tree] ๐Ÿ’ก Waarom gebruiken we componenten? Stel dat jouw website uit twintig pagina's bestaat. Iedere pagina heeft dezelfde header. Zonder componenten moet je die header twintig keer aanpassen. Met React maak je de header รฉรฉn keer. Daarna gebruik je dezelfde component overal opnieuw. Dat bespaart veel tijd en zorgt ervoor dat je code overzichtelijk blijft. ๐Ÿ› ๏ธ Opdracht 1 โ€“ Maak een map voor componenten Open de map: src Maak hierin een nieuwe map. components De projectstructuur ziet er daarna ongeveer zo uit. src โ”œโ”€โ”€ components โ”œโ”€โ”€ App.css โ”œโ”€โ”€ App.jsx โ”œโ”€โ”€ index.css โ””โ”€โ”€ main.jsx In deze map plaatsen we straks al onze React-componenten. ๐Ÿ› ๏ธ Opdracht 2 โ€“ Maak de eerste component Maak in de map components een nieuw bestand. Header.jsx Voeg onderstaande code toe. function Header() { return (

๐ŸŽฎ Game Collection

); } export default Header; Sla het bestand op. Je hebt nu jouw eerste React-component gemaakt. ๐Ÿ“– Wat betekent export default ? Een component staat in een apart bestand. Om deze component in een ander bestand te kunnen gebruiken, moet je hem exporteren. Dat doe je met: export default Header; Hierdoor kan App.jsx deze component straks importeren en gebruiken. ๐Ÿ› ๏ธ Opdracht 3 โ€“ Gebruik de Header-component Open: src/App.jsx Importeer de nieuwe component bovenaan het bestand. import "./App.css"; import Header from "./components/Header"; Vervang daarna de bestaande titel door de nieuwe component.
Je App.jsx ziet er nu ongeveer zo uit. import "./App.css"; import Header from "./components/Header"; function App() { return (

Welkom bij mijn eerste React-applicatie!

Naam: Jouw naam

Studentnummer: Jouw studentnummer

Klas: Jouw klas

); } export default App; Sla het bestand op. De browser ziet er nog precies hetzelfde uit. Het verschil is dat de titel nu uit een apart bestand wordt geladen. ๐Ÿ“– Wat betekent import ? Met import haal je een component uit een ander bestand. React weet hierdoor waar de component staat. Daarna kun je deze gebruiken alsof het een HTML-element is. Bijvoorbeeld:
React voert vervolgens automatisch de code uit die in Header.jsx staat. ๐Ÿ› ๏ธ Opdracht 4 โ€“ Maak een Footer-component Maak in de map components een nieuw bestand. Footer.jsx Voeg onderstaande code toe. function Footer() { return (
ยฉ 2026 Game Collection
); } export default Footer; Open daarna opnieuw: src/App.jsx Importeer de Footer-component. import Footer from "./components/Footer"; Voeg de component onderaan de pagina toe.