map() bilan ro'yxat render qilish, key prop, index as key muammosi va immutable qo'shish/o'chirish — test va mashqlar bilan.
map() metodi — React'da ro'yxatlarni render qilishning asosiy vositasi. key prop nima uchun kerakligini chuqur tushunish bu bobning maqsadi.
App.jsxReact JSXconst users = [{ id: 1, name: "Ali" }, { id: 2, name: "Vali" }];return (<ul>{users.map((u) => <li key={u.id}>{u.name}</li>)}</ul>);
React ro'yxat elementlari orasidagi farqni bilishi kerak — qaysi element qo'shilgan, o'chirilgan yoki qayta tartiblangan. key — shu elementlarga "barqaror identifikator" beradi.
App.jsxReact JSX{todos.map((todo, index) => (<TodoItem key={index} {...todo} />))}
⚠️ Common Mistake
Ro'yxat boshiga yangi element qo'shilsa yoki tartib o'zgarsa, indexlar siljib ketadi — React noto'g'ri elementni "o'sha joyda qolgan" deb hisoblab, input holati yoki animatsiya buzilishi mumkin.
App.jsxReact JSX{todos.map((todo) => (<TodoItem key={todo.id} {...todo} />))}
App.jsxReact JSXfunction removeTodo(id) {setTodos(todos.filter((t) => t.id !== id));}function addTodo(text) {setTodos([...todos, { id: crypto.randomUUID(), text }]);}
Task: Ismlar massividan <ul> ro'yxat yasang, unique key bilan.
Task: Todo ro'yxatiga yangi element qo'shish va o'chirish funksiyalarini yozing.
App.jsxReact JSX{items.map((item, i) => (<input key={i} defaultValue={item.text} />))}
Your Task: Foydalanuvchi ro'yxatni saralasa (sort), inputlardagi matn noto'g'ri joyga "yopishib qolishi" mumkin. Nega?
<details> <summary>Solution</summary> `key={i}` — index asosida, saralashdan keyin bir xil indexdagi element o'zgaradi, lekin React DOM elementini (va uning ichki holatini, masalan input matnini) "o'sha index'dagi komponent" deb hisoblab qoldiradi. Yechim: `key={item.id}` — unique va barqaror identifikator ishlatish. </details>key — React'ga elementlarni farqlashga yordam beradigan barqaror identifikator. indexni faqat ro'yxat hech qachon o'zgarmaydigan holatlarda key sifatida ishlating. Har doim ma'lumotning o'zidagi unique id'dan foydalaning.
key — reconciliation uchun zarurindexni key sifatida ishlatmangfilter (o'chirish), spread (qo'shish)App.jsxReact JSX{arr.map((item) => <Item key={item.id} {...item} />)}setArr(arr.filter((x) => x.id !== id)); // o'chirishsetArr([...arr, newItem]); // qo'shish
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 2 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: