onClick, onChange, onSubmit, argument uzatish, preventDefault va stopPropagation — test va mashqlar bilan.
State — ma'lumotni saqlaydi. Event handling — foydalanuvchi harakati asosida shu state'ni qachon o'zgartirishni belgilaydi.
App.jsxReact JSXfunction LikeButton() {function handleClick() {console.log("Layk bosildi!");}return <button onClick={handleClick}>❤️</button>;}function TodoItem({ id, onDelete }) {return <button onClick={() => onDelete(id)}>O'chirish</button>;}
⚠️ Common Mistake
onClick={onDelete(id)} deb yozish — bu funksiyani darhol chaqiradi, render paytida. To'g'risi: onClick={() => onDelete(id)}.
App.jsxReact JSXconst [text, setText] = useState("");return <input value={text} onChange={(e) => setText(e.target.value)} />;
App.jsxReact JSXfunction handleSubmit(e) {e.preventDefault(); // sahifa qayta yuklanishini to'xtatadi}<div onClick={(e) => e.stopPropagation()}>Modal</div>
Task: Bosilganda konsolga xabar chiqaradigan tugma yarating.
Task: Input qiymatini real vaqtda state'ga yozib boruvchi controlled input yarating.
App.jsxReact JSX<button onClick={console.log("bosildi")}>Bos</button>
Your Task: Nega bu kod sahifa yuklanishi bilanoq konsolga chiqadi, bosishni kutmasdan?
<details> <summary>Solution</summary> `console.log("bosildi")` darhol chaqirilib, natijasi (`undefined`) `onClick`ka uzatiladi. To'g'ri yechim: ```jsx <button onClick={() => console.log("bosildi")}>Bos</button> ``` </details>Event handler har doim funksiya sifatida uzatiladi, natija emas. preventDefault() — brauzer default xatti-harakatini to'xtatadi. stopPropagation() — hodisaning yuqoriga "ko'tarilishini" to'xtatadi.
preventDefault / stopPropagation — brauzer xatti-harakatini boshqaradiApp.jsxReact JSX<button onClick={() => fn()}>...</button><input value={v} onChange={(e) => setV(e.target.value)} /><form onSubmit={(e) => { e.preventDefault(); }}>...</form>
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: