Labo 2
Voor dit labo moet je de volgende theorie bekeken hebben:
- Componenten
- Props
- Folder structuur
- Styling
1. Simpele componentenβ
π Naam project:
lab-components-basics
π Basis project: n/a
Maak een nieuwe React applicatie aan en noem deze lab-components-basics.
Maak de volgende componenten aan:
Headermet als propstitleensubtitleListmet als propsitems(array van strings).- Elke string wordt getoond in een apart component
ListItemmet als propstext. - Gebruik hiervoor de
mapfunctie. - Gebruik een ongeordende lijst (
<ul>) om de items te tonen.
- Elke string wordt getoond in een apart component
Footermet als propscopyenyear
Gebruik deze componenten in de App component om de volgende pagina te maken:
Labo 2
Basic components
- item 1
- item 2
- item 3
Oplossingsvideoβ
2. Facebook cardsβ
π Naam project:
lab-components-facebook-card
π Basis project: n/a
Maak een nieuw project aan en noem deze lab-components-facebook-card.
Neem de volgende code over.
Teken eerst op papier hoe je deze facebook card zou opdelen in componenten. Splits deze componenten op in aparte componenten. Zorg dat alle content aanpasbaar is via props.
Let er op dat componenten ook kunnen bestaan uit andere componenten.
Oplossingsvideoβ
3. Penguinsβ
π Naam project:
lab-components-penguin-gallery
π Basis project: n/a
Maak een nieuw project aan en noem deze lab-components-penguin-gallery
Penguins.json in je src folder.
- importeer dit bestand in je project aan de hand van
import penguins from './penguins.json'; - Maak een component
PenguinCarddat een penguin toont. Dit component aanvaard een propertypenguinmet het type van een penguin uit het json bestand. - Filter de pinguΓ―ns zodat je enkel de vrouwelijke pinguΓ―ns toont (property
genderis "Female"). - Toon alle vrouwelijke pinguΓ―ns in een grid met 3 kolommen. Gebruik hiervoor css modules.
Female Penguins

Pip
Species ID: 1
Description: A playful young penguin fond of swimming.
Island: Macquarie Island

Waddle
Species ID: 1
Description: Leader of the rookery, very energetic.
Island: Macquarie Island

Pebble
Species ID: 4
Description: Collects colorful pebbles, gentle disposition.
Island: Antipodes Island

Splash
Species ID: 1
Description: Loves water sports, always active.
Island: Macquarie Island

Chilly
Species ID: 2
Description: Enjoys sliding on ice with friends.
Island: South Georgia
4. Slotmachineβ
π Naam project:
lab-components-slot-machine
π Basis project:lab-basics-slot-machine
Kopieer de slotmachine code van labo 1 en noem deze nieuwe applicatie lab-components-slot-machine en zorg voor de volgende dingen:
-
SlotMachine: aanvaard een propertyslotsdie het aantal slots aangeeft. Deze component bevat de logica om de slots te genereren en te tonen. Je kan deze component ook gebruiken om de logica te schrijven om te bepalen of de speler gewonnen heeft of verloren heeft.<SlotMachine slots={5} /> -
Slot: deze component bevat de logica om een slot te tonen. De waarde van de slot wordt doorgegeven via een propertyvalue.<Slot value={1} /> -
Zorg ervoor dat je meerdere slotmachines kan tonen op een pagina. Toon bijvoorbeeld een SlotMachine met 5 slots, een SlotMachine met 4 slots en een SlotMachine met 3 slots.
-
Gebruik css modules om de stijl van de slotmachine te bepalen. Je bent vrij om de stijl te kiezen.
De applicatie moet ongeveer er als volgt uitzien:
Labo 2: Slots



Je hebt verloren




Je hebt verloren





Je hebt verloren
Oplossingsvideoβ
5. Maaltafels componentβ
π Naam project:
lab-components-maaltafels
π Basis project:lab-basics-multiplication-tables
Kopieer de maaltafels code van labo 1 naar een nieuw project en noem deze lab-components-maaltafels en zorg voor de volgende componenten:
-
MultiplicationTable: deze component bevat de logica om de tabel te tonen. Deze component bevat een propertymaxdie het maximum getal aangeeft dat getoond moet worden.<MultiplicationTable max={5} /> -
MultiplicationRow: deze component bevat de logica om 1 rij van de tabel te tonen. Deze component bevat een propertyfactordie het getal aangeeft waarvan de tafel getoond moet worden. Deze component bevat ook een propertymaxdie het maximum getal aangeeft dat getoond moet worden.<MultiplicationRow factor={2} max={5} /> -
Header: deze component bevat de logica om de header van de tabel te tonen. Deze component bevat een propertymaxdie het maximum getal aangeeft dat getoond moet worden.<Header max={5} />
De applicatie moet ongeveer er als volgt uitzien:
| 1 | 2 | 3 | 4 | 5 | |
| 1 | 1 | 2 | 3 | 4 | 5 |
| 2 | 2 | 4 | 6 | 8 | 10 |
| 3 | 3 | 6 | 9 | 12 | 15 |
| 4 | 4 | 8 | 12 | 16 | 20 |
| 5 | 5 | 10 | 15 | 20 | 25 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 2 | 2 | 4 | 6 | 8 | 10 | 12 | 14 |
| 3 | 3 | 6 | 9 | 12 | 15 | 18 | 21 |
| 4 | 4 | 8 | 12 | 16 | 20 | 24 | 28 |
| 5 | 5 | 10 | 15 | 20 | 25 | 30 | 35 |
| 6 | 6 | 12 | 18 | 24 | 30 | 36 | 42 |
| 7 | 7 | 14 | 21 | 28 | 35 | 42 | 49 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 2 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
| 3 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 |
| 4 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 |
| 5 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 |
| 6 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 |
| 7 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 |
| 8 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 |
| 9 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
| 10 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
6. Who's that pokemon?β
π Naam project: n/a
π Basis project:lab-basics-whos-that-pokemon
Kopieer het lab-basics-whos-that-pokemon project van labo 1 naar een nieuw project.
Maak een nieuw component PokemonImage dat de afbeelding van een pokemon toont. Deze component aanvaardt de volgende properties:
id: het id van de pokemon (1 = Bulbasaur, 2 = Ivysaur, ...)visible: boolean die aangeeft of de pokemon zichtbaar is of niet. Indien deze false is, moet de afbeelding zwart gemaakt worden (gebruik hiervoor de CSS filterbrightness(0))size: de grootte van de afbeelding in pixels (standaard 200)
Toon in de App component twee keer de PokemonImage component. Eén keer met visible op false en één keer met visible op true.
7. Rainbow Propsβ
π Naam project:
lab-components-rainbow-props
π Basis project:lab-basics-rainbow
Maak een kopie van de lab-basics-rainbow applicatie van labo 1 naar een nieuw project en noem deze lab-components-rainbow-props. En zorg voor de volgende componenten:
Rainbow: Heeft een propertyamountdie het aantal kleuren aangeeft. Heeft ook een propertydirectiondie de richting van de kleuren aangeeft. Deze kan ofwel "horizontal" ofwel "vertical" zijn. Je kan de richting van de regenboog bepalen door deflexDirectionvan de container aan te passen.RainbowLine: Heeft een propertycolordie de kleur van de lijn aangeeft. Heeft ook een propertydirectiondie de richting van de lijn aangeeft. Deze kan ofwel "horizontal" ofwel "vertical" zijn. De hoogte van de lijn is 4px indien de richting "horizontal" is, anders is de hoogte 100px.
Je kan dus bijvoorbeeld de volgende code gebruiken om een horizontale en een verticale regenboog te tonen:
<Rainbow amount={10} direction="horizontal"/>
<Rainbow amount={20} direction="vertical"/>
Dit zal de volgende output geven: