⊗jsrtPmCoLSU 95 of 112 menu

Dvig stanj v React

Pogosto mora več komponent odražati iste spreminjajoče se podatke. V React je priporočljivo, da skupno stanje dvignemo do najbližjega skupnega prednika. Poglejmo si primer.

Recimo, da želimo narediti kalkulator temperature vode. Predstavljal bo vnosno polje, v katerega bo uporabnik vnašal temperaturo, in odstavek, v katerega bo izpisana sodba: ali je voda tekoča, trdna ali plinasta.

Recimo, da naš kalkulator predstavlja komponento-vsebnik Calculator:

function Calculator() { return <div> </div>; }

Izločimo vnosno polje za temperaturo v komponento TempInp, odstavek s sodbo pa v komponento Verdict:

function Calculator() { return <div> <Verdict /> <TempInp /> </div>; }

Zlahka je razumeti, da morata tako TempInp kot Verdict imeti stanje s temperaturo. Ob tem je logično, da mora biti to ista temperatura: med vnašanjem podatkov v vnosno polje mora biti prikazana sodba.

V takem primeru je priporočljivo uporabiti tehniko, imenovano dvig stanja: stanje, ki je skupno dvema (ali več) komponentama, se dvigne navzgor do njihovega skupnega starša.

V našem primeru se bo izkazalo, da mora stanje s temperaturo pripadati komponenti Calculator, ki ga bo posredoval v TempInp in Verdict kot lastnosti (props):

function Calculator() { const [temp, setTemp] = useState(0); return <div> <Verdict temp={temp} /> <TempInp temp={temp} /> </div>; }

V komponenti TempInp mora biti vnosno polje za spreminjanje temperature. Toda, ker je temperatura lastnost (prop) te komponente, je ne moremo neposredno spreminjati v TempInp. Pravilno je, da iz komponente Calculator posredujemo posebno funkcijo za spreminjanje temperature:

function Calculator() { const [temp, setTemp] = useState(0); function changeTemp(event) { setTemp(event.target.value); } return <div> <Verdict temp={temp} /> <TempInp temp={temp} changeTemp={changeTemp} /> </div>; }

Lahko tudi, mimogrede, ne uvedemo nove funkcije, ampak podrejeni komponenti posredujemo funkcijo setTemp:

function Calculator() { const [temp, setTemp] = useState(0); return <div> <Verdict temp={temp} /> <TempInp temp={temp} setTemp={setTemp} /> </div>; }

Napišite implementacijo komponent TempInp in Verdict.

Pomislite na 3 naloge, v katerih je potrebno uporabiti dvig stanja. Napišite rešitve teh nalog.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni