⊗jsrtPmCoTOS 96 of 112 menu

Uma Fonte Única da Verdade no React

Para quaisquer dados mutáveis em uma aplicação React deve haver uma fonte única da verdade. Isso significa que se você tem dois estados e um estado pode ser calculado a partir do outro - então um dos estados é redundante e deve ser removido.

Vamos discutir isso com um exemplo. Suponha que você, por exemplo, tenha duas entradas: na primeira é inserida a temperatura em graus Fahrenheit, e na segunda - em graus Celsius. E queremos que ambas as entradas estejam sincronizadas: ao inserir a temperatura em uma entrada, ela deve mudar correspondentemente na segunda.

A abordagem incorreta seria criar dois estados: um para a temperatura em Fahrenheit, e o segundo - em Celsius. Por que está incorreto: porque uma temperatura é calculada a partir da outra, o que significa que deve haver apenas um estado como local de armazenamento dos dados.

Escreva a implementação da tarefa descrita.

Um determinado programador escreveu um código que exibe a soma dos elementos de um array:

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); // soma dos elementos do array nums function handleChange(event) { setValue(event.target.value); } function handleBlur(event) { setNums([...nums, event.target.value]); // adiciona um elemento ao array setSum(getSum([...nums, event.target.value])); // recalcula a soma } return <div> <p>{sum}</p> <input value={value} onChange={handleChange} onBlur={handleBlur} /> </div>; }

O que há de errado com este código? Corrija-o.

Um determinado programador escreveu um código para editar elementos de um array:

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]); // escreve o texto do elemento editado em um estado separado } 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 que há de errado com este código? Corrija-o.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar