⊗jsrtPmCoTOS 96 of 112 menu

React-та бір ақиқат көзі

React-қолданбадағы кез келген өзгеретін деректер үшін бір ақиқат көзі болуы керек. Бұл сөздердің мағынасы - егер сізде екі стейт болса және бір стейт екіншісі арқылы есептелуі мүмкін болса - бұл стейттердің біреуі артық және оны жою қажет.

Мұны мысалмен талқылайық. Сізде, мысалы, екі енгізу өрісі бар делік: біріншісіне Фаренгейт градусымен температура енгізіледі, ал екіншісіне - Цельсий градусымен. Сонымен бірге біз, екі енгізу өрісі де синхрондалған болуын қалаймыз: бір енгізу өрісіне температураны енгізген кезде, ол сәйкес түрде екіншісінде де өзгеруі керек.

Қате тәсіл - екі стейт енгізу: біреуі Фаренгейт бойынша температура үшін, ал екіншісі - Цельсий бойынша. Неге қате: себебі бір температура екіншісінен есептеледі, бұл деректерді сақтау орны ретінде бір стейт болуы керек екенін білдіреді.

Сипатталған мәселенің шешімін жазыңыз.

Бір программашы массив элементтерінің қосындысын шығаратын код жазды:

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); // массив элементтерінің қосындысы nums function handleChange(event) { setValue(event.target.value); } function handleBlur(event) { setNums([...nums, event.target.value]); // массивке элемент қосамыз setSum(getSum([...nums, event.target.value])); // қосындыны қайта есептейміз } return <div> <p>{sum}</p> <input value={value} onChange={handleChange} onBlur={handleBlur} /> </div>; }

Бұл кодта не дұрыс емес? Оны түзетіңіз.

Бір программашы массив элементтерін өңдеу үшін код жазды:

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]); // өңделетін элементтің мәтінін бөлек стейтке жазамыз } 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>; }

Бұл кодта не дұрыс емес? Оны түзетіңіз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČ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
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау