Labo 8
- React Router
- Context API
1. Wake up Neoβ
π Naam project:
lab-context-wake-up-neo
π Basis project: n/a
Maak een nieuwe React applicatie aan en noem deze lab-context-wake-up-neo.
Begin van de volgende code:
import { useState } from 'react'
interface LineProps {
text: string
}
const FourthLine = ({text}: LineProps) => <><p>{text}</p></>;
const ThirdLine = ({text}: LineProps) => <><p>Follow the white rabbit.</p><FourthLine text={text}/></>;
const SecondLine = ({text}: LineProps) => <><p>The matrix has you...</p><ThirdLine text={text}/></>;
const FirstLine = ({text}: LineProps) => <><p>Wake Up, Neo...</p><SecondLine text={text}/></>
const App = () => {
const [text, setText] = useState("Knock, Knock, Neo");
return (
<>
<input type="text" value={text} onChange={(e) => setText(e.target.value)}/>
<div style={{backgroundColor: "black", color: "#4AF626", display: "flex", flexDirection: "column", padding: 20}}>
<FirstLine text={text}/>
</div>
</>
)
}
export default App
Pas deze helemaal aan zodat je gebruik maakt van Context.
Oplossingsvideoβ
2. Basic contextβ
π Naam project:
lab-context-settings
π Basis project: n/a
Maak een nieuwe React applicatie aan en noem deze lab-context-settings.
-
CreΓ«er een context genaamd
SettingsContext. De context moet twee waarden bijhouden:colorensetColor.coloris een string die een kleur waarde heeft ensetColoris een functie diecolorkan aanpassen. De startwaarde vancolormoet 'red' zijn. -
Maak een component genaamd
Square. Dit component moet decolorwaarde uit deSettingsContextuitlezen en deze waarde gebruiken om de achtergrondkleur van een vierkant blok te bepalen. Het blok moet een breedte en hoogte hebben van 100 pixels met 10 pixels marge. -
CreΓ«er een component
SquareRow. Dit component moet drieSquarecomponenten naast elkaar tonen. -
Maak een component genaamd
SelectionBox. Dit component moet een selectie box bevatten met de opties 'red', 'blue' en 'green'. De huidige geselecteerde waarde moet decolorzijn uit deSettingsContext. Als de gebruiker een andere kleur selecteert, moet desetColorfunctie van deSettingsContextgebruikt worden om de kleur aan te passen. -
Ook moet je het
Appcomponent aanmaken. In dit component, maakt het gebruik van deuseStatehook om de huidige kleur en desetColorfunctie te bepalen. Dit moet vervolgens in deSettingsContextmeegegeven worden. HetAppcomponent moet daarna hetSelectionBoxenSquareRowcomponent weergeven, beide omringd door deSettingsContext.Provider. -
Zorg er nu voor dat je ook op de
Squarecomponent kan drukken om de kleur te veranderen.
Oplossingsvideoβ
3. Todo Appβ
π Naam project:
lab-context-todo-app
π Basis project:lab-communication-todo-app
Maak een kopie van de Todo app van het vorige labo (lab-communication-todo-app) naar een nieuw project en noem deze lab-context-todo-app. En zorg voor de volgende uitbreidingen.
Uitbreidingen:
- Zorg ervoor dat je de todo's uit een API kan ophalen. Je kan hiervoor gebruik maken van de JSONPlaceholder API. Deze bevat een endpoint
/todosdie je kan gebruiken om todo's op te halen. - Plaats de Todo's en de code om ze in te lezen in een
TodoContextzodat je deze kan gebruiken in de verschillende componenten.
4. Quiz Appβ
π Naam project:
lab-context-quiz-app
π Basis project:lab-communication-quiz-app
Maak een kopie van de Quiz app van het vorige labo (lab-communication-quiz-app) naar een nieuw project. Noem deze lab-context-quiz-app. We gaan hier nog wat uitbreidingen op maken.
Uitbreidingen:
- Herwerk de Quiz applicatie zodat deze gebruik maakt van een
QuizContext. De functionaliteit van de applicatie blijft voor de rest volledig hetzelfde. - Voorzie een button bovenaan de pagina om te togglen tussen dark en light mode. Zorg ervoor dat alle componenten in de applicatie aanpassen aan de gekozen mode.
5. Pokemon appβ
π Naam project: n/a
π Basis project: n/a

My name is OAK! People call me the POKEMON PROF!
This world is inhabited by creatures called POKEMON!
For some people, POKEMON are pets. Others use them for fights. Myself...I study POKEMON as a profession.
Oplossingsvideoβ
6. Portfolio appβ
π Naam project:
lab-router-portfolio
π Basis project: n/a
Maak een nieuwe React applicatie aan en noem deze lab-router-portfolio.
Kies 3 verschillende oefeningen die je hebt gemaakt tijdens de voorgaande labos. Zorg ervoor dat deze oefeningen beschikbaar zijn onder de volgende routes: /oefening1, /oefening2 en /oefening3. Zorg voor een navigatiebalk die je toelaat om tussen de verschillende oefeningen te navigeren.
7. Quiz app met React Routerβ
π Naam project: n/a
π Basis project:lab-context-quiz-app
We gaan verder met de Quiz app uit de vorige oefening. Maak hier een kopie van zodat je de originele code nog hebt. Want we gaan hier nog wat uitbreidingen op maken.
Uitbreidingen:
- Maak gebruik van React Router om de moeilijkheidsniveau te kiezen:
/toont de moeilijkheidsniveau's (easy, medium, hard)/quiz/:difficultytoont de quiz met de gekozen moeilijkheidsniveau
- Zorg voor een simpele navigatiebalk waar je kan kiezen tussen de verschillende moeilijkheidsniveau's.
- Als je voor een nieuw moeilijkheidsniveau kiest, moet de quiz opnieuw beginnen.
