Ga naar hoofdinhoud

Labo 2

Voor dit labo moet je de volgende theorie bekeken hebben:

  • Componenten
  • Props
  • Folder structuur
  • Styling

1. Simpele componenten

Maak een nieuwe React applicatie aan en noem deze labo2-component.

Maak de volgende componenten aan:

  • Header met als props title en subtitle
  • List met als props items (array van strings).
    • Elke string wordt getoond in een apart component ListItem met als props text.
    • Gebruik hiervoor de map functie.
    • Gebruik een ongeordende lijst (<ul>) om de items te tonen.
  • Footer met als props copy en year

Gebruik deze componenten in de App component om de volgende pagina te maken:

Labo 2

Basic components

  • item 1
  • item 2
  • item 3

© Andie Similon (2021)

Oplossingsvideo

2. Facebook cards

Maak een nieuw project aan en noem deze labo2-facebook.

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

Maak een nieuw project aan en noem deze labo2-penguins Penguins.json in je src folder.

  • importeer dit bestand in je project aan de hand van import penguins from './penguins.json';
  • Maak een component PenguinCard dat een penguin toont. Dit component aanvaard een property penguin met het type van een penguin uit het json bestand.
  • Filter de pinguïns zodat je enkel de vrouwelijke pinguïns toont (property gender is "Female").
  • Toon alle vrouwelijke pinguïns in een grid met 3 kolommen. Gebruik hiervoor css modules.

Female Penguins

Pip

Pip

Species ID: 1

Description: A playful young penguin fond of swimming.

Island: Macquarie Island

Waddle

Waddle

Species ID: 1

Description: Leader of the rookery, very energetic.

Island: Macquarie Island

Pebble

Pebble

Species ID: 4

Description: Collects colorful pebbles, gentle disposition.

Island: Antipodes Island

Splash

Splash

Species ID: 1

Description: Loves water sports, always active.

Island: Macquarie Island

Chilly

Chilly

Species ID: 2

Description: Enjoys sliding on ice with friends.

Island: South Georgia

4. Slotmachine

Gebruik de slotmachine code die je in labo 1 hebt geschreven en zorg voor de volgende dingen:

  • SlotMachine: aanvaard een property slots die 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 property value.

    <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

Maak een kopie van de maaltafels oefening van labo 1 en zorg ervoor dat je de volgende componenten hebt:

  • MultiplicationTable: deze component bevat de logica om de tabel te tonen. Deze component bevat een property max die 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 property factor die het getal aangeeft waarvan de tafel getoond moet worden. Deze component bevat ook een property max die 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 property max die het maximum getal aangeeft dat getoond moet worden.

    <Header max={5} />

De applicatie moet ongeveer er als volgt uitzien:

12345
112345
2246810
33691215
448121620
5510152025
1234567
11234567
22468101214
336912151821
4481216202428
55101520253035
66121824303642
77142128354249
12345678910
112345678910
22468101214161820
336912151821242730
4481216202428323640
55101520253035404550
66121824303642485460
77142128354249566370
88162432404856647280
99182736455463728190
10102030405060708090100

6. Who's that pokemon?

Kopieer het 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 filter brightness(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.

PokemonPokemon

7. Rainbow Props

Maak een kopie van de regenboog oefening van labo 1 en zorg ervoor dat je de volgende componenten hebt:

  • Rainbow: Heeft een property amount die het aantal kleuren aangeeft. Heeft ook een property direction die de richting van de kleuren aangeeft. Deze kan ofwel "horizontal" ofwel "vertical" zijn. Je kan de richting van de regenboog bepalen door de flexDirection van de container aan te passen.
  • RainbowLine: Heeft een property color die de kleur van de lijn aangeeft. Heeft ook een property direction die 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: