⊗jsrtPmCoLSU 95 of 112 menu

Podizanje stanja u React-u

Nekoliko komponenti često treba da prikazuje iste promenljive podatke. U React-u je preporučeno da se deljeno stanje podigne do najbližeg zajedničkog pretka. Pogledajmo na primeru.

Pretpostavimo da želimo da napravimo kalkulator temperature vode. Predstavljaće ga input polje, u koje korisnik unosi temperaturu, i pasus u koji će biti ispisan rezultat: tečnost, led ili para.

Neka naš kalkulator predstavlja kontejnersku komponentu Calculator:

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

Izdvojimo input za unos temperature u komponentu TempInp, a pasus sa rezultatom - u komponentu Verdict:

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

Lako je shvatiti da i TempInp i Verdict treba da imaju stanje sa temperaturom. Pri tome je logično, da to treba da bude ista temperatura: kako se podaci unose u input polje, rezultat treba da se prikazuje.

U ovom slučaju je preporučeno koristiti tehniku, koja se naziva podizanje stanja: stanje, zajedničko za dve (ili više) komponente podiže se naviše do njihovog zajedničkog roditelja.

U našem slučaju će ispasti da stanje sa temperaturom treba da pripada komponenti Calculator, koji će ga prosleđivati u TempInp i Verdict kao props:

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

U komponenti TempInp treba da bude input polje za promenu temperature. Međutim, pošto je ova temperatura props ove komponente, nije moguće direktno u TempInp menjati nju. Ispravno je proslediti iz komponente Calculator specijalnu funkciju za promenu 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>; }

Može se, inače, ne uvoditi nova funkcija, već proslediti u child komponentu funkciju setTemp:

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

Napišite implementaciju komponenti TempInp i Verdict.

Smišljite 3 zadatka, u kojima je potrebno koristiti podizanje stanja. Napišite rešenja tih zadataka.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij