⊗jsrtPmCoTOS 96 of 112 menu

Jeden zdroj pravdy v React

Pre všetky meniteľné údaje v React aplikácii by mal existovať jeden zdroj pravdy. Tým sa myslí, že ak máte dva stavy a jeden stav môže byť vypočítaný z druhého - znamená to, že jeden z stavov je nadbytočný a mal by byť odstránený.

Poďme to prediskutovať na príklade. Predpokladajme, že máte, napríklad, dva vstupy: do prvého sa zadáva teplota v stupňoch Fahrenheita a do druhého - v stupňoch Celzia. Zároveň chceme, aby oba vstupy boli synchronizované: pri zadaní teploty do jedného vstupu by sa mala zodpovedajúcim spôsobom zmeniť v druhom.

Nesprávnym prístupom by bolo zaviesť dva stavy: jeden pre teplotu podľa Fahrenheita a druhý - podľa Celzia. Prečo je to nesprávne: pretože jedna teplota sa počíta z druhej, čo znamená, že ako miesto na ukladanie údajov by mal slúžiť jeden stav.

Napíšte implementáciu opísanej úlohy.

Nejaký programátor napísal kód, ktorý zobrazuje súčet prvkov poľa:

function getSum(arr) { let res = 0; for (let elem of arr) { res += +elem; } return res; } function Calculator() { const [value, setValue] = useState(''); const [nums, setNums] = useState([1, 2, 3]); const [sum, setSum] = useState(6); // súčet prvkov poľa nums function handleChange(event) { setValue(event.target.value); } function handleBlur(event) { setNums([...nums, event.target.value]); // pridáme prvok do poľa setSum(getSum([...nums, event.target.value])); // prepočítame súčet } return <div> <p>{sum}</p> <input value={value} onChange={handleChange} onBlur={handleBlur} /> </div>; }

Čo je nesprávne na tomto kóde? Opravte ho.

Nejaký programátor napísal kód na úpravu prvkov poľa:

function App() { const [notes, setNotes] = useState([1, 2, 3, 4, 5]); const [editNum, setEditNum] = useState(null); const [value, setValue] = useState(''); const result = notes.map((note, index) => { return <p key={index} onClick={() => startEdit(index)}> {note} </p>; }); function startEdit(index) { setEditNum(index); setValue(notes[index]); // napíšeme text upravovaného prvku do samostatného stavu } function changeItem(event) { setValue(event.target.value); setNotes([...notes.slice(0, editNum), event.target.value,...notes.slice(editNum + 1)]); } return <div> {result} <input value={value} onChange={changeItem} /> </div>; }

Čo je nesprávne na tomto kóde? Opravte ho.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť