React.memo, useMemo, useCallback, referential equality va code splitting — Problem/Measure/Solution/Tradeoff tamoyili bilan, test va debugging mashqlari.
Optimizatsiyani sababsiz qo'llash — o'zi muammo. Avval o'lchang, keyin optimallashtiring.
App.jsxReact JSXconst ProductCard = React.memo(function ProductCard({ product }) {console.log("ProductCard render bo'ldi");return <div>{product.name}</div>;});
React.memo — komponentni "eslab qoladi": agar props oldingisi bilan bir xil bo'lsa, komponentni qayta render qilmaydi.
⚠️ Common Mistake
React.memoni har bir komponentga "ehtiyot shart" sifatida qo'llash — bu ba'zan solishtirish xarajati tufayli aksincha sekinlashtirishi mumkin.
App.jsxReact JSXconst expensiveResult = useMemo(() => {return computeExpensiveValue(items);}, [items]);
useMemo bilan natijani "eslab qolish"App.jsxReact JSXconst handleClick = useCallback(() => {doSomething(id);}, [id]);
Har render'da yangi funksiya obyekti yaratiladi (garchi mantiqan bir xil bo'lsa ham). useCallback — funksiyaning o'zini "eslab qoladi", faqat dependency o'zgarganda yangisini yaratadi.
App.jsxReact JSXconst AdminPanel = React.lazy(() => import("./AdminPanel"));function App() {return (<Suspense fallback={<Spinner />}><AdminPanel /></Suspense>);}
Task: Katta ro'yxatni render qiluvchi komponentni React.memo bilan optimallashtiring va profiler orqali farqni kuzating.
Task: React.memolangan child komponentga callback prop uzatuvchi parent yarating, va useCallbacksiz/bilan farqni solishtiring.
App.jsxReact JSXfunction Parent() {const [count, setCount] = useState(0);const handleClick = () => console.log("clicked");return (<><button onClick={() => setCount(count + 1)}>{count}</button><MemoizedChild onClick={handleClick} /></>);}const MemoizedChild = React.memo(function Child({ onClick }) {console.log("Child render bo'ldi");return <button onClick={onClick}>Child</button>;});
Your Task: count o'zgarganda, MemoizedChild nega baribir qayta render bo'ladi (garchi React.memo ishlatilgan bo'lsa ham)?
Optimallashtirish — birinchi navbatda o'lchash, keyin maqsadli yechim qo'llash kerak. React.memo, useMemo, useCallback — har biri o'ziga xos vaziyat uchun, lekin har birining o'z xarajati bor.
React.memo — props o'zgarmasa re-render'ni o'tkazib yuboradiuseMemo — qimmat hisoblash natijasini eslab qoladiuseCallback — funksiya reference'ini barqarorlashtiradiApp.jsxReact JSXconst Memoized = React.memo(Component);const value = useMemo(() => computeExpensive(a, b), [a, b]);const fn = useCallback(() => doSomething(id), [id]);const Lazy = React.lazy(() => import("./Component"));
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: