createContext, Provider, useContext, real-world Authentication Context, performance muammolari va qachon Context ishlatmaslik kerakligi — test va mashqlar bilan.
Props drilling — ma'lumotni ko'p qavat orqali uzatish muammosi. Context — shu muammoni yechadi.
App.jsxReact JSXconst ThemeContext = createContext("light");function App() {return (<ThemeContext.Provider value="dark"><Toolbar /></ThemeContext.Provider>);}function ThemedButton() {const theme = useContext(ThemeContext);return <button className={theme}>Tugma</button>;}
Agar theme yoki currentUser kabi ma'lumot komponent daraxtining ko'p joyida kerak bo'lsa, uni har bir oraliq komponent orqali prop sifatida uzatish (props drilling) — kodni chalkashtiradi. Context ma'lumotni to'g'ridan-to'g'ri kerakli komponentga "efirga uzatadi".
App.jsxReact JSXconst AuthContext = createContext(null);function AuthProvider({ children }) {const [user, setUser] = useState(null);function login(userData) { setUser(userData); }function logout() { setUser(null); }return (<AuthContext.Provider value={{ user, login, logout }}>{children}</AuthContext.Provider>);}function Profile() {const { user, logout } = useContext(AuthContext);return <button onClick={logout}>{user.name} — Chiqish</button>;}
code.textTEXTProvider value o'zgarsa↓BARCHA useContext ishlatuvchi komponentlar re-render bo'ladi
⚠️ Common Mistake
Providerning value propini har render'da yangi obyekt sifatida berish (value={{ user }}) — bu barcha consumer'larni keraksiz qayta render qiladi.
Task: Light/Dark theme'ni butun ilova bo'ylab almashtiradigan ThemeContext yarating.
Task: AuthContext orqali login/logout funksionalligini amalga oshiring va foydalanuvchi ma'lumotini istalgan komponentda ko'rsating.
App.jsxReact JSXfunction App() {const [user, setUser] = useState(null);return (<AuthContext.Provider value={{ user, setUser }}><Dashboard /></AuthContext.Provider>);}
Your Task: Har render'da value={{ user, setUser }} yangi obyekt yaratiladi. Bu qanday muammoga olib kelishi mumkin?
Context — props drilling muammosini yechadi. Har qanday global state uchun emas — kam o'zgaradigan, keng tarqalgan ma'lumot uchun mos.
App.jsxReact JSXconst MyContext = createContext(defaultValue);<MyContext.Provider value={data}>{children}</MyContext.Provider>const data = useContext(MyContext);
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: