useToggle, useLocalStorage, useDebounce, useFetch kabi custom hooklar va Rules of Hooks — test va mashqlar bilan.
useState, useEffect, useRef — barchasi hook. Custom hook — shu hook'lardan tuzilgan, qayta ishlatiluvchi mantiq.
App.jsxReact JSXfunction useToggle(initial = false) {const [value, setValue] = useState(initial);const toggle = () => setValue((v) => !v);return [value, toggle];}function useLocalStorage(key, initialValue) {const [value, setValue] = useState(() => {const saved = localStorage.getItem(key);return saved ? JSON.parse(saved) : initialValue;});useEffect(() => {localStorage.setItem(key, JSON.stringify(value));}, [key, value]);return [value, setValue];}
Agar bir xil mantiq (masalan, localStorage bilan sinxronlashtirish) bir nechta komponentda takrorlansa, custom hook shu mantiqni bitta joyga jamlab, uni istalgan komponentda qayta ishlatish imkonini beradi.
App.jsxReact JSXfunction useDebounce(value, delay) {const [debounced, setDebounced] = useState(value);useEffect(() => {const id = setTimeout(() => setDebounced(value), delay);return () => clearTimeout(id);}, [value, delay]);return debounced;}function useFetch(url) {const [data, setData] = useState(null);const [loading, setLoading] = useState(true);useEffect(() => {setLoading(true);fetch(url).then((res) => res.json()).then(setData).finally(() => setLoading(false));}, [url]);return { data, loading };}
Task: useToggle hookini yarating va modal ochish/yopish uchun ishlating.
Task: useLocalStorage yordamida foydalanuvchi sozlamalarini saqlang.
Task: useDebounce yordamida qidiruv maydonini optimallashtiring — foydalanuvchi yozishni to'xtatgandan 500ms keyingina so'rov yuboriladi.
App.jsxReact JSXfunction useCounter() {if (someCondition) {const [count, setCount] = useState(0);}return { count, setCount };}
Your Task: Bu kod nega Rules of Hooks'ni buzadi?
<details> <summary>Solution</summary> Hook'lar shartli (if ichida) chaqirilmasligi kerak — React hook'larning har render'da bir xil tartibda chaqirilishiga tayanadi. Yechim: ```jsx function useCounter() { const [count, setCount] = useState(0); return { count, setCount }; } ``` </details>Custom hook — logikani (UI emas) qayta ishlatish vositasi. Nomi har doim use bilan boshlanadi. Rules of Hooks — shartsiz, komponent tepasida chaqirilishi shart.
use bilan boshlanishi shartApp.jsxReact JSXfunction useMyHook(param) {const [state, setState] = useState(initial);useEffect(() => {...}, [param]);return state; // yoki { state, actions }}
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 / 3 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: