⊗jsrtPmCoLSU 95 of 112 menu

Stāvokļu paceļana React

Bieži vien vairākiem komponentiem jāatspoguļo viens un tie paši mainīgie dati. React ieteicams izmantot kopīgo stāvokli paceļot to līdz tuvākajam kopīgajam priekštečam. Apskatīsim piemērā.

Pieņemsim, ka mēs vēlamies izveidot ūdens temperatūras kalkulatoru. Tas būs ievades lauks, kurā lietotājs ievadīs temperatūru, un rindkopa, kurā tiks izvadīts secinājums: ūdens ir šķidrs, ūdens ir cietsts, ūdens ir gāzveida.

Pieņemsim, ka mūsu kalkulators ir konteinera komponents Calculator:

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

Izveidosim atsevišķu komponentu temperatūras ievadei TempInp, bet rindkopu ar secinājumu - komponentā Verdict:

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

Viegli saprast, ka gan TempInp, gan Verdict ir jābūt stāvoklim ar temperatūru. Tomēr ir loģiski, ka tai jābūt vienai un tai pašai temperatūrai: ievadot datus ievades laukā, secinājumam jāatjauninas.

Šādā gadījumā ieteicams izmantot paņēmienu, ko sauc par stāvokļa paceļanu: stāvoklis, kas ir kopīgs diviem (vai vairākiem) komponentiem, tiek pacelts augšup līdz to kopējam vecākkomponentam.

Mūsu gadījumā izrādīsies, ka stāvoklim ar temperatūru jāpieder komponentam Calculator, kurs nodos to TempInp un Verdict kā props:

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

Komponentā TempInp jābūt ievades laukam temperatūras maiņai. Bet, tā kā šī temperatūra ir šī komponenta props, tieši TempInp to mainīt nevar. Pareizi būtu no komponenta Calculator nodot īpašu funkciju temperatūras maiņai:

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

Starp citu, var neievadīt jaunu funkciju, bet nodot pakārtotajā komponentā funkciju setTemp:

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

Uzrakstiet komponentu TempInp un Verdict realizāciju.

Izdomājiet 3 uzdevumus, kuros ir jāizmanto stāvokļa paceļana. Uzrakstiet šo uzdevumu risinājumus.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt