تفاوت بین کاهش دهنده و میان افزار در Redux چیست؟
Nov 10, 2025
سلام! به عنوان یک تامین کننده کاهنده، اغلب از من در مورد تفاوت بین کاهش دهنده و میان افزار در Redux سؤال می شود. این یک سوال رایج است، به خصوص برای کسانی که تازه وارد دنیای Redux و مدیریت حالت در برنامه های React شده اند. بنابراین، بیایید مستقیماً وارد آن شویم و آن را به روشی که به راحتی قابل درک باشد تجزیه کنیم.
کاهش دهنده چیست؟
اول از همه، اجازه دهید در مورد کاهنده ها صحبت کنیم. در Redux، یک کاهش دهنده یک تابع خالص است که وضعیت فعلی و یک عمل را به عنوان آرگومان می گیرد و یک حالت جدید برمی گرداند. ساده به نظر می رسد، درست است؟ خوب، یک جورهایی هست، اما همچنین فوق العاده قدرتمند است.
فرض کنید در حال ساختن یک برنامه فهرست کارها هستید. وضعیت شما ممکن است آرایهای از موارد باید باشد، و هر اقدام میتواند چیزی مانند "افزودن یک کار جدید"، "علامت گذاری یک کار - انجام به عنوان تکمیل شده" یا "حذف یک کار - انجام" باشد. وظیفه کاهنده این است که این اقدامات را انجام دهد و وضعیت را متناسب با آن به روز کند.
در اینجا یک مثال ساده از یک کاهش دهنده برای برنامه لیست کارهای ما آورده شده است:
const initialState = { todos: [] }; const todoReducer = (state = initialState, action) => { switch (action.type) { case 'ADD_TODO': return { ...state, todos: [...state.todos, action.payload] }; case 'DELETE_TODO': return { ...state, todos: state.todos.filter(todo => todo.id!== action.payload) }; پیش فرض: وضعیت بازگشت. } }
در این مثال، زمانی کهADD_TODOاقدام ارسال می شود، کاهنده وضعیت فعلی را می گیرد، آن را پخش می کند، و سپس مورد جدید را به - انجام می دهد.همهآرایه زمانی کهDELETE_ALLاقدام ارسال می شود، آن مورد را با شناسه مشخص شده فیلتر می کند.


به عنوان یک تامین کننده کاهنده، ما طیف گسترده ای از کاهنده های با کیفیت بالا را ارائه می دهیمکاهنده تیتانیوم Gr7وکاهنده زیرکونیوم. این کاهنده ها برای انجام وظایف پیچیده مدیریت دولتی به طور موثر و قابل اعتماد طراحی شده اند.
Middleware چیست؟
حال به سراغ میان افزار می رویم. میان افزار در Redux راهی برای رهگیری اقدامات قبل از رسیدن به کاهش دهنده است. می توان از آن برای اهداف مختلفی مانند ثبت گزارش، مدیریت عملیات ناهمزمان یا افزودن عملکرد اضافی به برنامه شما استفاده کرد.
یکی از رایجترین موارد استفاده میانافزار، مدیریت اقدامات ناهمزمان، مانند برقراری تماسهای API است. در یک راهاندازی سنتی Redux، اقدامات همزمان هستند، به این معنی که بلافاصله انجام میشوند. اما زمانی که نیاز به برقراری تماس API دارید، باید منتظر پاسخ باشید. اینجاست که میان افزار وارد می شود.
یک میان افزار محبوب برای مدیریت اقدامات ناهمزمان Redux Thunk است. با Redux Thunk، میتوانید توابع را بهجای اشیاء ساده بهعنوان اعمال ارسال کنید. سپس این توابع می توانند عملیات ناهمزمان را انجام دهند و پس از اتمام، سایر اقدامات را ارسال کنند.
در اینجا مثالی از استفاده از Redux Thunk برای برقراری تماس API آورده شده است:
import { createStore, applicationMiddleware } from'redux'; واردات thunk from'redux - thunk'; const initialState = { data: null, loading: false, error: null }; کاهش دهنده case 'FETCH_DATA_SUCCESS': return { ...state, loading: false, data: action.payload }; مورد 'FETCH_DATA_FAILURE': return { ...state, loading: false, error: action.payload }; پیش فرض: وضعیت بازگشت. } } const store = createStore(reducer, applicationMiddleware(thunk)); const fetchData = () => { return async (dispatch) => { dispatch({ type: 'FETCH_DATA_REQUEST' }); try { const answer = await fetch('https://api.example.com/data'); const data = await response.json(); dispatch({ type: 'FETCH_DATA_SUCCESS', payload: data }); } catch (error) { dispatch({ type: 'FETCH_DATA_FAILURE', payload: error.message }); } } };
در این مثال،fetchDataتابع یک عمل کوچک است. ابتدا a را ارسال می کندFETCH_DATA_REQUESTاقدامی برای نشان دادن اینکه داده ها در حال واکشی هستند. سپس تماس API را برقرار می کند. در صورت موفقیت آمیز بودن تماس، a را ارسال می کندFETCH_DATA_SUCCESSاقدام با داده ها اگر خطایی وجود داشته باشد، a را ارسال می کندFETCH_DATA_FAILUREاقدام با پیام خطا
تفاوت های کلیدی
بنابراین، تفاوت های کلیدی بین کاهش دهنده و میان افزار چیست؟
- کارکرد: کار اصلی یک کاهنده این است که وضعیت را بر اساس اقدامات به روز کند. این یک تابع خالص است که وضعیت فعلی و یک عمل را می گیرد و یک حالت جدید را برمی گرداند. از سوی دیگر، میانافزار برای رهگیری اقدامات و افزودن قابلیتهای اضافی مانند مدیریت عملیات ناهمزمان یا ثبت گزارش استفاده میشود.
- زمان بندی: کاهش دهنده ها پس از ارسال یک عمل و قبل از به روز رسانی وضعیت فراخوانی می شوند. میانافزار قبل از رسیدن اکشن به کاهشدهنده فراخوانی میشود و به آن اجازه میدهد تا عمل را تغییر دهد یا وظایف دیگری را انجام دهد.
- نوع تابع: کاهش دهنده ها توابع خالص هستند، یعنی همیشه خروجی یکسانی را برای ورودی یکسان برمی گردانند و هیچ عارضه ای ندارند. میانافزار میتواند توابع ناخالصی باشد، زیرا میتواند عوارض جانبی مانند برقراری تماسهای API یا ورود به سیستم را انجام دهد.
چرا هر دو مهم هستند
هم کاهش دهنده ها و هم میان افزارها بخش های ضروری یک برنامه Redux هستند. کاهش دهنده ها مدیریت دولتی شما را منظم و قابل پیش بینی نگه می دارند. آنها اطمینان می دهند که وضعیت برنامه شما به روشی کنترل شده تغییر می کند. از سوی دیگر، میانافزار، انعطافپذیری و عملکرد اضافی را به برنامه شما اضافه میکند. این به شما امکان می دهد تا سناریوهای پیچیده مانند عملیات ناهمزمان را بدون درهم ریختن کاهنده های خود مدیریت کنید.
به عنوان یک تامین کننده کاهش دهنده، ما اهمیت داشتن کاهنده های با کیفیت بالا که با میان افزار به خوبی کار می کنند را درک می کنیم. ماکاهنده تیتانیوم Gr7وکاهنده زیرکونیومبه گونه ای طراحی شده اند که با طیف وسیعی از میان افزارها سازگار باشند و از اجرای روان برنامه شما اطمینان حاصل کنند.
نتیجه گیری
در نتیجه، کاهش دهنده ها و میان افزارها در Redux اهداف متفاوت اما مکملی را دنبال می کنند. کاهش دهنده ها مسئول به روز رسانی وضعیت هستند، در حالی که میان افزار برای رهگیری اقدامات و افزودن عملکرد اضافی استفاده می شود. درک تفاوت بین آنها برای ساخت برنامه های React قوی و مقیاس پذیر بسیار مهم است.
اگر در بازار کاهنده های با کیفیت بالا هستید، مایلیم از شما بشنویم. چه در حال کار بر روی یک پروژه کوچک یا یک برنامه کاربردی در مقیاس بزرگ باشید، کاهنده های ما برای رفع نیازهای شما طراحی شده اند. برای شروع بحث خرید و یافتن کاهنده مناسب برای پروژه خود با ما تماس بگیرید.
مراجع
- مستندات رسمی Redux
- واکنش اسناد رسمی
- مخزن Redux Thunk GitHub
