Virtual DOM tushunchasi, reconciliation/diffing algoritmi va key'ning component identity'dagi roli — chuqur test va debugging mashqlari bilan.
React'ning "sehri" — Virtual DOM va reconciliation algoritmi. Bu bobda React ichida haqiqatan nima sodir bo'lishini chuqur ko'ramiz.
Virtual DOM — haqiqiy DOM'ning yengil, JavaScript obyektlaridan iborat nusxasi.
code.textTEXTJSX → React.createElement() → React Element (Virtual DOM tugunlari)
Reconciliation — React'ning eski va yangi Virtual DOM daraxtlarini solishtirib, haqiqiy DOM'da qanday minimal o'zgarish qilish kerakligini aniqlash jarayoni.
code.textTEXTEski daraxt: A - B - CYangi daraxt: A - C - DReact taqqoslaydi:A — o'zgarmaganB — olib tashlanganC — o'z joyida qoldi (yoki ko'chdi)D — qo'shilgan
key — PART 9'da ko'rganimizdek, reconciliation algoritmiga elementlarni to'g'ri moslashtirish uchun signal beradi.
Task: Ichida useState bo'lgan (masalan input) komponentlar ro'yxatini yarating va keyni tasodifiy (Math.random()) qilib bering — natijada nima sodir bo'lishini kuzating va tushuntiring.
App.jsxReact JSXfunction TodoList({ todos }) {return todos.map((todo) => (<input key={Math.random()} defaultValue={todo.text} />));}
Your Task: Foydalanuvchi inputga yozganda, ro'yxat biroz keyinroq qayta render bo'lsa (masalan yangi todo qo'shilsa), yozilgan matn yo'qolib qoladi. Nega?
<details> <summary>Solution</summary> `key={Math.random()}` — har render'da yangi, tasodifiy key beradi. React buni har safar "butunlay yangi element" deb hisoblab, eski DOM node'ni (va uning ichidagi yozilgan matnni) yo'q qiladi. Yechim — barqaror key ishlatish: ```jsx <input key={todo.id} defaultValue={todo.text} /> ``` </details>Virtual DOM — UI'ning yengil JavaScript tasviri. Reconciliation — eski va yangi tasvirni solishtirib, minimal DOM o'zgarishini aniqlash jarayoni. key — bu jarayonda komponentlarni to'g'ri moslashtirish uchun asosiy signal.
code.textTEXTJSX → React Element (Virtual DOM)Eski va Yangi Virtual DOM solishtiriladi (diffing)Faqat farq → haqiqiy DOM'ga qo'llanadi (commit)key — component identity uchun asosiy signal
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 / 1 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: