Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • RTK Query Documentation39টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Redux Intro
  • Architecture
  • Redux Toolkit
  • Project Setup
  • Folder Structure
  • configureStore
  • Redux Provider
  • createSlice
  • Reducers & Actions
  • Typed Hooks
  • Selectors
  • Devtools
  • RTK Query
  • createApi
  • API Middleware
  • API Tags
  • Fetch List
  • Fetch Detail
  • Mutation — Create
  • Mutation CRUD
  • Cache Invalidation
  • Cache Lifecycle
  • Polling
  • Query Selectors
  • Optimistic Update
  • Cart Slice Full
  • Cart UI
  • Local vs Server
  • Listener Middleware
  • Error Handling
  • Loading States
  • Serializability
  • SSR Prefetch
  • Complete Flow
  • Complete Project
  • Production
  • Common Mistakes
  • Best Practices
  • Interview Q&A
  1. Docs
  2. RTK Query
  3. Selectors — useSelector ও Memoization
RTK QueryIntermediate

Selectors — useSelector ও Memoization

useSelector-এর কাজ, object সিলেক্ট করার বিপদ, createSelector — বাংলায়।

6টি অংশবাংলা ভাষায়

useSelector React-এ state থেকে একটি ভ্যালু বেছে নেয়; store-এ পরিবর্তন হলে এর selected ভ্যালু না-বদলালে component re-render হয় না। কিন্তু object/array select করলে new reference নতুন render ট্রিগার করে — এতে সতর্ক থাকা দরকার।

খারাপ প্যাটার্নtsx
tsx
// প্রতিবার store update-এ re-render হয় —
// (state.cart) new object reference
const all = useAppSelector((state) => state.cart);
ভালো — ছোট অংশ selecttsx
tsx
const items = useAppSelector((state) => state.cart.items);
const count = useAppSelector((state) =>
  state.cart.items.reduce((sum, i) => sum + i.qty, 0),
);

createSelector

src/features/cart/cartSelectors.tsts
ts
import { createSelector } from "@reduxjs/toolkit";

export const selectCartItems = (state: RootState) => state.cart.items;

export const selectCartCount = createSelector(
  [selectCartItems],
  (items) => items.reduce((sum, i) => sum + i.qty, 0),
);

export const selectCartTotal = createSelector(
  [selectCartItems],
  (items) =>
    items.reduce(
      (sum, i) => sum + i.qty * (pricePerItem(i.productId) ?? 0),
      0,
    ),
);
createSelector-input শ্যাডো

createSelector-এর শেষ ফাংশনটি cache করে শুধুমাত্র যখন তার input selector-এর ভ্যালু পরিবর্তন হয়। calculations new-array/expensive হলে ব্যবহার করবেন — ভেতরে object select-ও শুধু প্রয়োজন হলে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরTyped Hooks — useAppDispatch / useAppSelectorপরেরRedux DevTools — Debug সেশনে
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com