Zustand، redux ساده – انجمن DEV

با استفاده از جعبه ابزار Redux، واقعاً بدون هیچ مشکلی کار را به خوبی انجام می دهد. راه اندازی فروشگاه استفاده از آن را در بقیه پروژه ها بسیار آسان می کند.
اما یک چیز در مورد ایجاد فروشگاههای Redux این است که واقعاً پرمخاطب است و باید کدهای بسیار بیشتری بنویسید.
این قسمتی است که Zustand وارد می شود، انجام همان کاری که redux انجام می دهد اما با کد واقعا کمتر. من یک پروژه ساده ایجاد خواهم کرد تا به شما نشان دهد که استفاده از Zustand چقدر آسان است
ابتدا یک پوشه در دایرکتوری ریشه ایجاد کنید که حاوی لباس Hook برای ایالت ما باشد
touch store/useItemsStore.js
در آن فایل، قلاب به صورت زیر ایجاد می شود
import create from 'zustand';
const useMyStore = create((set) => ({
items: [], // initial state
addItem: (newItem) => set((state) => ({ items: [...state.items, newItem] })),
deleteItem: (index) =>
set((state) => ({ items: state.items.filter((_, i) => i !== index) })),
}));
این یک لیست خالی و دو تابع برای افزودن و حذف موارد ایجاد می کند
هنگامی که می خواهید از حالت و توابع بالا در اجزای خود استفاده کنید، موارد زیر را انجام خواهید داد
import { useMyStore } from './store/useItemsStore';
function MyComponent() {
const addItem = useMyStore((state) => state.addItem);
const handleClick = () => {
addItem('New Item');
};
return (
<>
<button onClick={handleClick}>Add Item</button>
{/* Render the list of items here */}
<ul>
{items.map((item, index) => (
<li key={index}>
{item} <button onClick={() => handleDelete(index)}>Delete</button>
</li>
))}
</ul>
</>
);
}
و بس. کد زیادی ندارد و همچنان عملکردی مشابه redux دارد. استفاده از آن برای پروژه های جانبی کوچک تا کنون سرگرم کننده بوده است
در اینجا یک برنامه ساده Todo وجود دارد که من از Zustand برای مدیریت وضعیت خود استفاده می کنم: https://react-zustand.netlify.app/