ডেভসংকেত

যুস্ট্যান্ড - একটি ফ্রন্টএন্ড স্ট্যাট ম্যানেজ টুল

Zustand একটি ফ্রন্টএন্ড স্ট্যাট ম্যানেজ করার টুল। আরো সহজে বললে রিডাক্স জেএস এর বিকল্প একটি স্ট্যাট ম্যানেজ করার টুল।

কন্ট্রিবিউটর

  • princerafid01

শেয়ার করুন

যুস্ট্যান্ড ইনস্টল করা

  • npm এর সাহায্যে ইনস্টল করা

    npm install zustand
  • yarn এর সাহায্যে ইনস্টল করা

    yarn add zustand

স্টোর ফান্ডামেন্টালস

  • স্টোর তৈরি করা

    create()
  • স্টোরে ফাংশন পাস করার মাধ্যমে ইনিশিয়াল স্ট্যাট সেট করা এবং স্ট্যাট মিউটেটর ফাংশন এড করা

    const useBearStore = create((set) => ({ bears: 0, increasePopulation: () => set((state) => ({ bears: state.bears + 1 })), removeAllBears: () => set({ bears:  0 }) })) 
  • স্টোর এর স্টেট পেতে (হুকের সাহায্যে )

    const bears = useBearStore(state => state.bears)
  • স্ট্যাট মিউটেটর ফাংশন এক্সেস করা

    const removeAllBears = useBearStore(state => state.removeAllBears); removeAllBears();
  • Middleware এপলাই করতে স্টোরে, স্টোরের পাসকৃত ফাংশন কে middlware এর ফাংশন wrapper দিয়ে wrap করে দিতে হয়। For example: (আমরা যদি রিডাক্স এর ডেভটুল ইউজ করতে চাই যুস্ট্যান্ড এর জন্য তখন আমরা middleware ইউজ করব এভাবে)

    create(devtools((set) => ({})));

যুস্ট্যান্ড এর কিছু রেসিপি

  • স্টোরের সবকিছু নিয়ে আসা

    const state = useBearStore()
  • সিলেক্টিং মাল্টিপল স্টেট স্লাইস

    const nuts = useBearStore((state) => state.nuts); const honey = useBearStore((state) => state.honey)
  • স্টেট কে মার্জ না করে পুরো পরিবর্তন করে ফেলতে চাইলে মিউটেশনের set ফাংশনে আপনার সেকেন্ড প্যারামিটার পাস করতে হবে এভাবে

    () => set({}, true), // clears the entire store, actions included
  • Async একশন

    fetch: async (pond) => { const response = await fetch(pond) set({ fishies:  await response.json() }) },
  • মেমোইজিং ( স্টোরিং ) সিলেক্টরস

    const fruit = useStore(useCallback((state) => state.fruits[id], [id]))
  • একশনের ভিতর স্টেট থেকে রিড করা

    const useStore = create((set, get) => ({ sound: 'grunt', action: () => { const sound = get().sound;} })
  • রিয়েক্ট ছাড়া যুস্ট্যান্ড ইউজ করা

    import create from 'zustand/vanilla'; const store = create(() => ({ ... }));const { getState, setState, subscribe, destroy } = store
  • immer এর সাথে যুস্ট্যান্ড ইউজ করা

    import produce from 'immer'; const useStore = create((set) => ({  lush: {  forest: { contains: { a: 'bear' } } },  set: (fn) => set(produce(fn)), })); const set = useStore((state) => state.set); set((state) => { state.lush.forest.contains = null;})`

কোনটা কী

  • Mutator

    স্টেট চ্যাঞ্জ করার জন্য কোন ফাংশন 
  • Store State

    সম্পূর্ণ  এপ্লিকেশন এর  স্টেট  হোল্ড করে  
  • Middleware

    Middleware যুস্ট্যান্ডের স্টোরে এক্সট্রা ফিচার এড করার জন্য ব্যবহৃত হয়

যুস্ট্যান্ড এর Middleware পরিচিতি

  • রিডাক্স এর ডেভটুল ইউজ করে যুস্ট্যান্ড এর স্টেট ট্রাক করার জন্য

    create(devtools((set) => ({})));
  • যুস্ট্যান্ড এর স্টোর কে লোকাল স্টোরেজ এর সাথে sync বা persist করাতে চাইলে

    create(persist((set) => ({})));
  • আপনি যদি রিডাক্স এর মত reducers and action types ইউজ করতে চান

    const useGrumpyStore = create(redux(reducer, initialState))
  • বেসিক টাইপ্সক্রিপ্ট ইউজ এর জন্য

    create<State>()(...)

ডেভসংকেত সম্পর্কে

ডেভসংকেত এর লক্ষ্য হচ্ছে বাংলাতে একটা বড় চিটশিটের ভান্ডার গড়ে তোলা। এটা সম্পূর্ণ স্বাধীন এবং ওপেন সোর্স গিটহাব অর্গানাইজেশন।

স্পন্সর