از کدنویسی ریاکت و یا نکست جی اس برای طراحی سایتهای مدرن و سئو لذت میبرم! دنبال توسعهدهنده خلاق برای سایت یا لندینگ پیج هستید؟ من اینجام! 😊 zil.ink/seyedahmaddev
نوشتن ردیوسر Reducer برای مدیریت حالت شمارنده
درک عملکرد ردیوسر Reducer با مثالی ساده
const counterReducer = (state = { count: 0 }, action) => {
switch (action.type) { case 'INCREMENT':
return {
...state,
count: state.count + 1,
};
case 'DECREMENT':
return {
...state,
count: state.count - 1,
};
default:
return state;
}
};به کد بالا دقت کنید و سپس برای درک این کد به توضیحات زیر توجه فرمایید:
- این تابع
counterReducerنام دارد و دو پارامترstateوactionدریافت میکند. - پارامتر
stateحالت فعلی شمارنده را ذخیره میکند. - پارامتر
actionاطلاعات مربوط به اکشن فعلی را ذخیره میکند.
سوئیچ کیس switch case :
- از
switchبرای بررسی نوع اکشن استفاده میشود. - اگر نوع اکشن
INCREMENTباشد، مقدارcountبا 1 افزایش مییابد. - اگر نوع اکشن
DECREMENTباشد، مقدارcountبا 1 کاهش مییابد. - در غیر این صورت، حالت فعلی بدون تغییر بازگردانده میشود.
نکات:
- این تابع یک تابع خالص است. به این معنی که خروجی تابع فقط به ورودیهای آن (state و action) بستگی دارد.
- این تابع از اسپرید spread اپراتور (
...) برای کپی کردن خواصstateبه ابجکت جدید استفاده میکند.

مثال:
فرض کنید state برابر با { count: 0 } است.
- اگر
actionبا نوعINCREMENTارسال شود، تابعcounterReducerمقدارcountرا به 1 افزایش میدهد و{ count: 1 }را باز میگرداند. - اگر
actionبا نوعDECREMENTارسال شود، تابعcounterReducerمقدارcountرا به -1 کاهش میدهد و{ count: -1 }را باز میگرداند.
استفاده از ردیوسر:
- میتوانید از این ردیوسر در
configureStoreبرای ایجاد یک Redux store استفاده کنید. - سپس میتوانید از
storeبرای دسترسی به مقدار فعلیcountو dispatch اکشنها برای افزایش یا کاهشcountاستفاده کنید.
آیا ردیوسر در ریداکس با یوزردیوسر در ری اکت شباهت و ارتباطی دارد؟
بله، ردیوسر در Redux و یوزردیوسر در React شباهت و ارتباط دارند.
شباهتهای ردیوسر در ریداکس با یوزردیوسر در ری اکت:
- هر دو تابع هستند: ردیوسر در Redux یک تابع است که حالت برنامه را بر اساس اکشنها به روز میکند.
یوزردیوسر در ریاکت یک تابع است که state یک کامپوننت را بر اساس props و state قبلی آن به روز میکند. - هر دو از یک الگوی مشابه برای به روز رسانی حالت استفاده میکنند: هر دو تابع از یک سوئیچ کیس برای بررسی نوع ورودی (اکشن در ریداکس و props در ریاکت) و به روز رسانی state بر اساس آن استفاده میکنند.
- هر دو برای مدیریت state در برنامههای JavaScript استفاده میشوند: ردیوسر برای مدیریت state در سطح برنامه در ریداکس استفاده میشود.
یوزردیوسر برای مدیریت state در سطح کامپوننت در ریاکت استفاده میشود.
تفاوتهای ردیوسر در ریداکس با یوزردیوسر در ری اکت:
- محدوده: ردیوسر برای مدیریت state در سطح برنامه استفاده میشود.
یوزردیوسر برای مدیریت state در سطح کامپوننت استفاده میشود. - نوع ورودی: ردیوسر اکشنها را به عنوان ورودی دریافت میکند.
یوزردیوسر props و state قبلی را به عنوان ورودی دریافت میکند. - نوع خروجی: ردیوسر state جدید برنامه را به عنوان خروجی باز میگرداند.
یوزردیوسر یک ابجکت با دو خاصیتstateوdispatchبه عنوان خروجی باز میگرداند.
ارتباط:
- ریداکس Redux و ریاکت React میتوانند با هم استفاده شوند:میتوانید از ریداکس برای مدیریت state در سطح برنامه و از ریاکت برای ساخت رابط کاربری استفاده کنید.
- یوزردیوسر میتواند با Redux ادغام شود:میتوانید از یوزردیوسر برای مدیریت state در سطح کامپوننت در یک برنامه Redux استفاده کنید.
جمعبندی:
ردیوسر و یوزردیوسر هر دو برای مدیریت state در برنامههای JavaScript استفاده میشوند.
- ردیوسر برای مدیریت state در سطح برنامه در Redux استفاده میشود.
- یوزردیوسر برای مدیریت state در سطح کامپوننت در React استفاده میشود.
هر دو تابع از یک الگوی مشابه برای به روز رسانی حالت استفاده میکنند، اما در محدوده و نوع ورودی و خروجی تفاوت دارند.
مطلبی دیگر از این انتشارات
HOC یا Higher Order Component در ری اکت
مطلبی دیگر از این انتشارات
هوکهای ری اکت یا React Hooks
مطلبی دیگر از این انتشارات
سرور کامپوننت و SSR در React: یه راهنمای ساده