⊗jsrtPmCoLSU 95 of 112 menu

Подизање стања у React-у

Често неколико компоненти мора да приказује исте податке који се мењају. У React-у је препоручено да се заједничко стање подигне до најближег заједничког претка. Хајде да погледамо на примеру.

Рецимо да желимо да направимо калкулатор температуре воде. Он ће бити представљен пољем за унос, у које ће корисник уносити температуру, и параграфом, у који ће бити исписан пресуда: вода је течна, вода је чврста, вода је гасовита.

Рецимо да наш калкулатор представља компоненту-контејнер Calculator:

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

Издвојимо поље за унос температуре у компоненту TempInp, а параграф са пресудом - у компоненту Verdict:

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

Лако је разумети да и TempInp, и Verdict треба да имају стање са температуром. При томе је логично да то треба да буде иста температура: док се подаци уносе у поље, треба да се приказује пресуда.

У таквом случају је препоручено да се користи техника, која се зове подизање стања: стање, заједничко за две (или више) компоненте, се подиже навише до њиховог заједничког родитеља.

У нашем случају ће се испоставити да стање са температуром треба да припада компоненти Calculator, која ће га прослеђивати у TempInp и Verdict као пропсе:

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

У компоненти TempInp треба да буде поље за унос за промену температуре. Али, пошто је та температура пропс ове компоненте, онда се директно у TempInp не може мењати. Исправно би било проследити из компоненте Calculator специјалну функцију за промену температуре:

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

Може се, уосталом, не уводити нова функција, већ проследити у детећу компоненту функцију setTemp:

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

Напишите имплементацију компоненти TempInp и Verdict.

Смислите 3 задатка, у којима је потребно користити подизање стања. Напишите решења тих задатака.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј