⊗jsrtPmCoLSU 95 of 112 menu

Lifting State Up i React

Ofte skal flere komponenter reflektere de samme ændrende data. I React anbefales det at løfte den delte state op til den nærmeste fælles forfader. Lad os se på et eksempel.

Lad os sige, at vi vil lave en lommeregner for vandtemperatur. Den vil repræsentere et inputfelt, hvor brugeren indtaster temperaturen, og et afsnit, hvor der udskrives en vurdering: vandet er flydende, vandet er fast, vandet er gasformigt.

Lad os sige, at vores lommeregner repræsenterer en container-komponent Calculator:

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

Lad os flytte inputfeltet for temperaturning ind i komponenten TempInp, og afsnittet med vurderingen - ind i komponenten Verdict:

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

Det er let at forstå, at både TempInp og Verdict skal have en state med temperaturen. Samtidig er det logisk, at dette skal være den samme temperatur: Efterhånden som data indtastes i inputfeltet, skal vurderingen vises.

I sådanne tilfælde anbefales det at bruge en teknik, som kaldes lifting af state: staten, som er fælles for to (eller flere) komponenter, løftes op til deres fælles forælder.

I vores tilfælde vil det betyde, at staten med temperaturen skal tilhøre komponenten Calculator, som vil videregive den til TempInp og Verdict som props:

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

I komponenten TempInp skal der være et inputfelt for at ændre temperaturen. Men da denne temperatur er et prop for denne komponent, kan den ikke ændres direkte i TempInp. Det rigtige vil være at videregive fra komponenten Calculator en speciel funktion til at ændre temperaturen:

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

Man kan forresten undlade at introducere en ny funktion, og videregive den underordnede komponent funktionen setTemp:

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

Skriv implementationen af komponenterne TempInp og Verdict.

Find på 3 opgaver, hvor det er nødvendigt at bruge lifting af state. Skriv løsninger på disse opgaver.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis