Redux arxitekturasi, Redux Toolkit bilan configureStore/createSlice, useSelector va useDispatch — test va mashqlar bilan.
Redux — global state boshqaruvi uchun eng mashhur kutubxonalardan biri. Redux Toolkit (RTK) — uni yozishni ancha soddalashtiradi.
Redux — barcha ilova state'ini bitta markaziy "store"da saqlaydi, uni faqat action'lar orqali, reducer'lar yordamida o'zgartirish mumkin.
code.textTEXTComponent → dispatch(action) → Reducer → Yangi State → Store → Component qayta render bo'ladi
App.jsxReact JSXimport { configureStore, createSlice } from "@reduxjs/toolkit";const cartSlice = createSlice({name: "cart",initialState: { items: [] },reducers: {addItem: (state, action) => {state.items.push(action.payload); // RTK Immer orqali "mutation"ga o'xshab yozish mumkin},clearCart: (state) => {state.items = [];},},});export const { addItem, clearCart } = cartSlice.actions;const store = configureStore({reducer: { cart: cartSlice.reducer },});
💡 Key Idea
Redux Toolkit ichidagi Immer kutubxonasi tufayli, state.items.push(...) yozish xavfsiz — RTK buni "orqa fonda" immutable update'ga aylantiradi.
App.jsxReact JSXfunction Cart() {const items = useSelector((state) => state.cart.items);const dispatch = useDispatch();return (<button onClick={() => dispatch(addItem({ id: 1, name: "Telefon" }))}>Qo'shish ({items.length})</button>);}
Task: createSlice yordamida oddiy e-commerce savat (cart) slice yarating — qo'shish, o'chirish va tozalash amallari bilan.
App.jsxReact JSXfunction Cart() {const items = useSelector((state) => state.items); // state.cart.items emasreturn <p>{items.length}</p>;}
Your Task: Bu kod nega xato beradi (yoki undefined qaytaradi)?
Redux — markaziy store orqali predictable state boshqaruvi. Redux Toolkit — createSlice, configureStore orqali Redux yozishni soddalashtiradi, Immer esa "mutatsiyaga o'xshash" kodni xavfsiz qiladi.
useSelector — o'qish, useDispatch — action yuborish uchunApp.jsxReact JSXconst slice = createSlice({ name, initialState, reducers: { action: (state, action) => {...} } });const store = configureStore({ reducer: { key: slice.reducer } });const value = useSelector((state) => state.key.field);const dispatch = useDispatch();dispatch(slice.actions.action(payload));
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: