⊗jsrtPmCoTOS 96 of 112 menu

Jedan izvor istine u React-u

Za sve promenljive podatke u React aplikaciji mora postojati jedan izvor istine. Pod ovim rečima se podrazumeva da ako imate dva stanja (state) i jedno stanje može da se izračuna preko drugog - onda je jedno od tih stanja suvišno i treba ga ukloniti.

Hajde da ovo razmotrimo na primeru. Pretpostavimo da imate, na primer, dva input polja: u prvo se unosi temperatura u stepenima Farenhajta, a u drugo - u stepenima Celzijusa. Pri tome želimo da oba input polja budu sinhronizovana: pri unosu temperature u jedno polje, ona na odgovarajući način treba da se promeni u drugom.

Pogrešan pristup bi bio da uvedete dva stanja: jedno za temperaturu po Farenhajtu, a drugo - po Celzijusu. Zašto je pogrešno: zato što se jedna temperatura izračunava iz druge, a to znači da kao mesto za čuvanje podataka mora da postoji samo jedno stanje.

Napišite implementaciju opisanog zadatka.

Izvestan programer je napisao kod koji prikazuje zbir elemenata niza:

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); // zbir elemenata niza nums function handleChange(event) { setValue(event.target.value); } function handleBlur(event) { setNums([...nums, event.target.value]); // dodajemo element u niz setSum(getSum([...nums, event.target.value])); // ponovo izračunavamo zbir } return <div> <p>{sum}</p> <input value={value} onChange={handleChange} onBlur={handleBlur} /> </div>; }

Šta nije u redu sa ovim kodom? Ispravite ga.

Izvestan programer je napisao kod za uređivanje elemenata niza:

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]); // upisujemo tekst elementa koji se uređuje u posebno stanje } 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>; }

Šta nije u redu sa ovim kodom? Ispravite ga.

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