Debounced search, Toast/Modal tizimlari va pagination — Problem/Architecture/Implementation/Edge Cases tamoyili bilan, test va mashqlar.
Bu bobda tez-tez uchraydigan real-world UI funksiyalarni: qidiruv, sahifalash, modal va bildirishnomalarni ko'ramiz.
App.jsxReact JSXfunction SearchBox() {const [query, setQuery] = useState("");const debouncedQuery = useDebounce(query, 500);useEffect(() => {if (debouncedQuery) {fetch(`/api/search?q=${debouncedQuery}`);}}, [debouncedQuery]);return <input value={query} onChange={(e) => setQuery(e.target.value)} />;}
App.jsxReact JSXconst ToastContext = createContext(null);function ToastProvider({ children }) {const [toasts, setToasts] = useState([]);function showToast(message) {const id = Date.now();setToasts((t) => [...t, { id, message }]);setTimeout(() => setToasts((t) => t.filter((x) => x.id !== id)), 3000);}return (<ToastContext.Provider value={showToast}>{children}<div className="toasts">{toasts.map((t) => <div key={t.id}>{t.message}</div>)}</div></ToastContext.Provider>);}
Bir vaqtda bir nechta toast ko'rsatilishi, toast avtomatik yo'qolishi va foydalanuvchi qo'lda yopishi mumkinligi hisobga olinishi kerak.
App.jsxReact JSXfunction ProductList() {const [page, setPage] = useState(1);const { data } = useFetch(`/api/products?page=${page}`);return (<><List items={data} /><button onClick={() => setPage((p) => p + 1)}>Keyingi</button></>);}
Task: To'liq Toast System — success, error, info turlari bilan, avtomatik yo'qolish va qo'lda yopish imkoniyati bilan yarating.
App.jsxReact JSXfunction SearchBox() {const [query, setQuery] = useState("");useEffect(() => {fetch(`/api/search?q=${query}`);}, [query]);return <input value={query} onChange={(e) => setQuery(e.target.value)} />;}
Your Task: Bu qidiruv har harf kiritilganda serverga so'rov yuboradi. Buni qanday optimallashtirish mumkin?
<details> <summary>Solution</summary> `useDebounce` hook qo'shish kerak: ```jsx const debouncedQuery = useDebounce(query, 500); useEffect(() => { if (debouncedQuery) fetch(`/api/search?q=${debouncedQuery}`); }, [debouncedQuery]); ``` </details>Real-world funksiyalar (qidiruv, toast, pagination) — handbookda o'rgangan asosiy tushunchalar (debounce, Context, useEffect, state)ning amaliy birlashmasidir.
page state'ini dependency sifatida ishlatadiApp.jsxReact JSXconst debounced = useDebounce(value, 500);const showToast = useContext(ToastContext);const [page, setPage] = useState(1);
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: