چگونه با React Context API از یک کاهش دهنده استفاده کنیم؟
Dec 15, 2025
سلام! اگر اهل توسعه React هستید، احتمالاً در مورد React Context API و کاهش دهنده ها شنیده اید. ترکیب آنها می تواند یک تغییر بازی برای مدیریت وضعیت در برنامه های React شما باشد. و حدس بزنید چی؟ من یک تامین کننده کاهش دهنده هستم، بنابراین اطلاعاتی در مورد نحوه استفاده از کاهش دهنده با React Context API دارم.
اول از همه، اجازه دهید به سرعت مرور کنیم که React Context API و کاهش دهنده ها چیست. React Context API راهی برای به اشتراک گذاشتن داده ها بین مؤلفه ها بدون نیاز به ارسال ابزار به صورت دستی در هر سطح از درخت مؤلفه است. وقتی دادههایی دارید که چندین مؤلفه نیاز به دسترسی به آن دارند، مانند وضعیت تأیید هویت کاربر یا تنظیمات طرح زمینه، بسیار مفید است.
از طرف دیگر، کاهنده یک تابع خالص است که وضعیت فعلی و یک عمل را به عنوان ورودی می گیرد و یک حالت جدید برمی گرداند. این یک مفهوم کلیدی در Redux است، اما میتوانید از آن بهطور مستقل در React نیز استفاده کنید. کاهنده ها برای مدیریت تغییرات پیچیده حالت به روشی قابل پیش بینی عالی هستند.
بنابراین، چرا می خواهید از یک کاهش دهنده با React Context API استفاده کنید؟ خوب، Context API برای به اشتراک گذاری داده ها عالی است، اما روشی داخلی برای مدیریت به روز رسانی های وضعیت پیچیده ندارد. اینجاست که کاهشدهندهها وارد میشوند. با استفاده از یک کاهنده با Context API، میتوانید یک مکان متمرکز برای مدیریت تغییرات حالت و اشتراکگذاری آن حالت در برنامه خود داشته باشید.
بیایید با تنظیم ساختار اولیه شروع کنیم. ابتدا باید یک زمینه ایجاد کنید. در React می توانید این کار را با استفاده ازcreateContextتابع در اینجا یک مثال است:
وارد کردن React, { createContext, useReducer } from'react'; // ایجاد یک متن const MyContext = createContext(); // تعریف تابع کاهنده const reducer = (state, action) => { switch (action.type) { case 'INCREMENT': return { count: state.count + 1 }; case 'DECREMENT': return { count: state.count - 1 }; پیش فرض: وضعیت بازگشت. } } // ایجاد یک مؤلفه ارائه دهنده const MyProvider = ({ فرزندان }) => { const [state, dispatch] = useReducer(reducer, { count: 0 }); بازگشت ( <MyContext.Provider value={{ state, dispatch }}> {children} </MyContext.Provider> ); }; صادرات { MyContext، MyProvider };
در این مثال ابتدا یک زمینه به نام ایجاد می کنیمMyContext. سپس یک تابع کاهنده تعریف می کنیم که می تواند دو نوع عمل را انجام دهد:افزایشوکاهش. اینMyProviderجزء استفاده می کنداستفاده از کاهش دهندهقلاب برای مدیریت وضعیت و تابع اعزام. سپس وضعیت و dispatch به عنوان مقدار بهMyContext.Provider.
حال، بیایید ببینیم که چگونه از این زمینه در یک کامپوننت استفاده کنیم. فرض کنید یک کامپوننت ساده دارید که میخواهد از اکشنهای حالت و ارسال استفاده کند. در اینجا نحوه انجام این کار آمده است:
وارد کردن React، { useContext } از 'react'; وارد کردن { MyContext } از './yourContextFile'; const MyComponent = () => { const { state, dispatch } = useContext(MyContext); بازگشت ( <div> <p>تعداد: {state.count}</p> <button onClick={() => dispatch({ type: 'INCREMENT' })}>افزایش</button> <button onClick={() => dispatch({ type: 'DECREMENT' })}ton>کاهش</> }; صادرات پیش فرض MyComponent.
درMyComponent، ما استفاده می کنیمuseContextقلاب برای دسترسی به وضعیت و ارسال تابع از متن. سپس می توانیم وضعیت را نمایش دهیم و اقدامات را برای به روز رسانی آن ارسال کنیم.
یکی از مزایای استفاده از کاهنده با React Context API این است که کد شما را قابل نگهداری تر می کند. از آنجایی که تمام تغییرات حالت در یک مکان (کاهش کننده) انجام می شود، درک نحوه به روز رسانی وضعیت آسان تر است. همچنین، به دلیل اینکه وضعیت از طریق زمینه به اشتراک گذاشته می شود، لازم نیست نگران حفاری پایه باشید.
حال، اجازه دهید در مورد برخی از موارد استفاده در دنیای واقعی صحبت کنیم. اگر در حال ساخت یک برنامه تجارت الکترونیک هستید، ممکن است یک سبد خرید داشته باشید. وضعیت سبد خرید را می توان با استفاده از یک کاهش دهنده مدیریت کرد و در اجزای مختلف مانند لیست محصول، خلاصه سبد خرید و صفحه پرداخت به اشتراک گذاشت.
بیایید نگاهی به یک مثال کاهنده پیچیده تر برای سبد خرید بیندازیم:
const cartReducer = (state, action) => { switch (action.type) { case 'ADD_TO_CART': return { ...state, items: [...state.items, action.payload] }; case 'REMOVE_FROM_CART': return { ...state, items: state.items.filter(item => item.id!== action.payload.id) }; case 'UPDATE_QUANTITY': return { ...state, items: state.items.map(item => item.id === action.payload.id ? {...item, quantity: action.payload.quantity } : item ) }; پیش فرض: وضعیت بازگشت. } }
این کاهنده می تواند اضافه کردن اقلام به سبد خرید، حذف اقلام از سبد خرید و به روز رسانی تعداد اقلام در سبد خرید را انجام دهد.
من به عنوان یک تامین کننده کاهنده، انواع کاهنده های با کیفیت بالا را برای موارد استفاده مختلف ارائه می دهم. به عنوان مثال، اگر روی پروژه ای کار می کنید که به مواد با استحکام بالا نیاز دارد، ممکن است به ما علاقه مند باشیدکاهنده تیتانیوم Gr7. این از تیتانیوم درجه یک ساخته شده است و می تواند در شرایط سخت مقاومت کند. و اگر به یک کاهنده با مقاومت شیمیایی خاص نیاز دارید، ماکاهنده زیرکونیوممی تواند مناسب باشد
اگر به دنبال پیادهسازی یک کاهشدهنده با React Context API در پروژه خود هستید و به چند کاهنده قابل اعتماد نیاز دارید، در تماس با آن درنگ نکنید. چه یک توسعه دهنده در مقیاس کوچک یا یک شرکت در مقیاس بزرگ باشید، ما راه حل های مناسبی برای شما داریم. ما میتوانیم مشخصات دقیق و پشتیبانی را در اختیار شما قرار دهیم تا اطمینان حاصل کنیم که بیشترین بهره را از کاهندههای ما ببرید.
برای اطلاعات بیشتر و شروع فرآیند خرید با ما تماس بگیرید. ما اینجا هستیم تا به شما کمک کنیم تا برنامه های React بهتری با کاهش دهنده های مناسب بسازید.


مراجع:
- واکنش اسناد رسمی در Context API
- واکنش اسناد رسمی در مورد قلاب useReducer
