⊗jsrtPmCoLSU 95 of 112 menu

State omhoog brengen in React

Vaak moeten meerdere componenten dezelfde veranderende gegevens weerspiegelen. In React wordt aanbevolen om de gedeelde state omhoog te brengen naar de dichtstbijzijnde gemeenschappelijke voorouder. Laten we een voorbeeld bekijken.

Stel we willen een calculator maken voor de temperatuur van water. Het zal een invoerveld zijn waarin de gebruiker de temperatuur invoert, en een alinea waarin het vonnis wordt weergegeven: water is vloeibaar, water is vast, water is gasvormig.

Stel dat onze calculator een containercomponent Calculator is:

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

Laten we het invoerveld voor de temperatuur in een component TempInp plaatsen, en de alinea met het vonnis - in een component Verdict:

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

Het is gemakkelijk te begrijpen dat zowel TempInp als Verdict state met de temperatuur moeten hebben. Tegelijkertijd is het logisch dat dit dezelfde temperatuur moet zijn: terwijl gegevens worden ingevoerd in het invoerveld, moet het vonnis worden weergegeven.

In dat geval wordt het gebruik van een techniek, genaamd state omhoog brengen, aanbevolen: state, die gemeenschappelijk is voor twee (of meer) componenten, wordt omhoog gebracht naar hun dichtstbijzijnde gemeenschappelijke ouder.

In ons geval zal het blijken dat de state met de temperatuur moet toebehoren aan de component Calculator, die het zal doorgeven aan TempInp en Verdict als props:

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

In de component TempInp moet een invoerveld zitten om de temperatuur te wijzigen. Maar, omdat deze temperatuur een prop van deze component is, kan deze niet direct in TempInp worden gewijzigd. Het is correct om vanuit de component Calculator een speciale functie voor het wijzigen van de temperatuur door te geven:

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

Je kunt overigens geen nieuwe functie introduceren, maar de functie setTemp doorgeven aan de child component:

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

Schrijf de implementatie van de componenten TempInp en Verdict.

Bedenk 3 taken waarin state omhoog brengen moet worden gebruikt. Schrijf de oplossingen voor deze taken.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren