⊗jsrtPmCoLSU 95 of 112 menu

React-də State-in Yuxarı Qaldırılması

Tez-tez bir neçə komponent eyni dəyişən məlumatları əks etdirməlidir. React-də ümumi state-i ən yaxın ümumi ata qədər qaldırmaq tövsiyə olunur. Gəlin bir nümunəyə baxaq.

Tutaq ki, biz suyun temperatur kalkulyatoru etmək istəyirik. O, istifadəçinin temperaturu daxil edəcəyi bir input və hökmün çap olunacağı bir abzas təşkil edəcək: su mayedir, su bərkdir, su qazformalıdır.

Fərz edək ki, bizim kalkulyator Calculator konteyner komponentidir:

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

Gəlin temperaturun daxil edilməsi üçün inputu TempInp komponentinə, hökm abzasını isə Verdict komponentinə çıxaraq:

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

Başa düşmək asandır ki, həm TempInp, həm də Verdict temperatur ilə state-ə malik olmalıdır. Eyni zamanda məntiqlidir ki, bu eyni temperatur olmalıdır: inputa məlumat daxil edildikcə hökm görünməlidir.

Belə bir halda state-in yuxarı qaldırılması adlanan qəbuldan istifadə etmək tövsiyə olunur: iki (və ya daha çox) komponent üçün ortaq olan state onların ortaq valideyninə qədər yuxarı qaldırılır.

Bizim vəziyyətimizdə belə çıxır ki, temperaturla state Calculator komponentinə məxsus olmalıdır, o da onu TempInpVerdict komponentlərinə props kimi ötürəcək:

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

TempInp komponentində temperaturu dəyişmək üçün input olmalıdır. Lakin, bu temperatur bu komponentin propsu olduğundan, birbaşa TempInp komponentində onu dəyişmək olmaz. Düzgün olan, Calculator komponentindən temperaturu dəyişmək üçün xüsusi bir funksiyanı ötürməkdir:

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

Yeri gəlmişkən, yeni funksiya təqdim etmək lazım deyil, övlad komponentə setTemp funksiyasını ötürmək olar:

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

TempInpVerdict komponentlərinin reallaşdırılmasını yazın.

State-in yuxarı qaldırılmasının istifadə edilməli olduğu 3 məsələ tapın. Bu məsələlərin həllərini yazın.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et