Header-komponentin vaihtoehtoinen sisältö
Sovelluksen navigointi toimii tällä hetkellä juuri niin, kuin sen pitäisikin. Aikaisemmin, kun toteutimme Store- ja Settings-komponentteja, niin välitimme Header-komponentille kerättyjen sitruunoiden määrän (balance).
Store-komponentissa Header-komponenttia kutsutaan seuraavasti:
<Header balance={props.stats.balance}>store</Header>
Ja hyvin identtisesti myös Settings-komponentissa:
<Header balance={props.stats.balance}>settings</Header>
Toteutetaan seuraavaksi Header-komponenttiin ehtorakenne, joka renderöi otsikon hieman eri tavalla, jos komponentille on välitetty balance-arvo. Avaa src/components-kansion Header.jsx-tiedosto ja tee siihen seuraavat muutokset:
-
Tuodaan sitruunaikoni tiedoston alussa seuraavalla import-lauseella:
import iconLemon from '../assets/lemon.svg'; -
Muutetaan funktion koodi seuraavanlaiseksi:
if (props.hasOwnProperty("balance")) { return ( <div className="header header_sub"> <h1>{props.children}</h1> <div>{props.balance} <img src={iconLemon}/></div> </div> ); } else { return ( <div className="header"> <h1>{props.children}</h1> </div> ); }Tämä ehdolllistaa renderöinnin sen perusteella, onko
balance-arvo määritelty. Tarkistus tapahtuu oliomuuttujanhasOwnProperty-funktion avulla. Se palauttaa toden, josprops-muuttujassa onbalance-avaimella arvo. Jos balance-arvo on määritelty, niin renderöidään otsikon lisäksi div-elementti, jossa on kassassa olevien sitruunoiden määrä. Elementin toiiseksi luokaksi määritelläänheader_sub, joka asemoi sisällön sekä vasempaan että oikeaan reunaan. Koodin else-osa on sama kuin aikaisemmin, jossa otsikko tulostetaan keskitettynä.
Näiden muutosten jälkeen sekä Store- että Settings-sivujen otsikko on muuttunut niin, että otsikkoteksti on pienemmällä ja oikeassa reunassa on kassassa olevien sitruunoiden määrä.
Muutosten vienti versiohallintaan
Viedään viimeisimmät muutokset versiohallintaan.
git add .
git commit -m "muuttaa Header-komponentin toiminnan"