⊗jsrtPmCoLSU 95 of 112 menu

Pozdvihovanie stavu v React

Niekoľko komponentov často musí zobrazovať rovnaké meniace sa dáta. V Reacte sa odporúča pozdvihnúť spoločný stav k najbližšiemu spoločnému predkovi. Pozrime sa na príklad.

Povedzme, že chceme vytvoriť kalkulačku teploty vody. Bude pozostávať zo vstupného poľa, do ktorého používateľ zadá teplotu, a odseku, do ktorého sa bude vypisovať verdikt: voda je kvapalná, voda je tuhá, voda je plynná.

Povedzme, že naša kalkulačka je kontajnerový komponent Calculator:

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

Vynesme vstupné pole pre zadanie teploty do komponentu TempInp a odsek s verdiktom - do komponentu Verdict:

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

Je ľahké pochopiť, že ako TempInp, tak Verdict musia mať stav s teplotou. Zároveň je logické, že by to mala byť tá istá teplota: po zadaní údajov do vstupného poľa sa musí zobraziť verdikt.

V takom prípade sa odporúča použiť techniku nazývanú pozdvihovanie stavu: stav, ktorý je spoločný pre dva (alebo viac) komponentov, sa pozdvihne hore k ich spoločnému rodičovi.

V našom prípade to znamená, že stav s teplotou by mal patriť komponentu Calculator, ktorý ho bude odovzdávať do TempInp a Verdict ako props:

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

V komponente TempInp by malo byť vstupné pole pre zmenu teploty. Ale keďže táto teplota je props tohto komponentu, nie je možné ju priamo v TempInp meniť. Správne bude odovzdať z komponentu Calculator špeciálnu funkciu pre zmenu teploty:

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>; }

Mimochodom, nie je potrebné zavádzať novú funkciu, stačí odovzdať do dcérskeho komponentu funkciu setTemp:

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

Napíšte implementáciu komponentov TempInp a Verdict.

vymyslite 3 úlohy, v ktorých je potrebné použiť pozdvihovanie stavu. Napíšte riešenia týchto úloh.

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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť