⊗jsrtPmCoTOS 96 of 112 menu

Une source unique de vérité dans React

Pour toute donnée modifiable dans une application React, il doit y avoir une source unique de vérité. Cela signifie que si vous avez deux états et qu'un état peut être calculé via l'autre - alors un des états est superflu et doit être supprimé.

Discutons-en avec un exemple. Supposons que vous ayez, par exemple, deux champs de saisie : dans le premier, la température est saisie en degrés Fahrenheit, et dans le second - en degrés Celsius. En même temps, nous voulons que les deux champs soient synchronisés : lors de la saisie de la température dans un champ, elle doit changer de manière correspondante dans le second.

Une approche incorrecte serait d'utiliser deux états : un pour la température en Fahrenheit, et un second - pour Celsius. Pourquoi c'est incorrect : parce qu'une température est calculée à partir de l'autre, ce qui signifie qu'il ne doit y avoir qu'un seul état comme lieu de stockage des données.

Écrivez une implémentation de la tâche décrite.

Un certain programmeur a écrit un code affichant la somme des éléments d'un tableau :

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); // somme des éléments du tableau nums function handleChange(event) { setValue(event.target.value); } function handleBlur(event) { setNums([...nums, event.target.value]); // ajoute un élément au tableau setSum(getSum([...nums, event.target.value])); // recalcule la somme } return <div> <p>{sum}</p> <input value={value} onChange={handleChange} onBlur={handleBlur} /> </div>; }

Qu'est-ce qui ne va pas avec ce code ? Corrigez-le.

Un certain programmeur a écrit un code pour modifier les éléments d'un tableau :

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]); // écrivons le texte de l'élément édité dans un état séparé } 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>; }

Qu'est-ce qui ne va pas avec ce code ? Corrigez-le.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser