چگونه از Reducer با قلاب در React استفاده کنیم؟

Dec 30, 2025

پیام بگذارید

سلام! اگر اهل React هستید و به دنبال ارتقای بازی خود با کاهش دهنده ها هستید، در جای مناسبی هستید. من فقط یک مشتاق فناوری تصادفی نیستم. من در واقع یک تامین کننده کاهنده هستم. بله، می دانم، کمی جالب به نظر می رسد، اما کنسرت بسیار جالبی است. بنابراین، بیایید به نحوه استفاده از یک کاهنده با قلاب در React بپردازیم.

به هر حال کاهش دهنده چیست؟

اول از همه، یک کاهنده یک تابع خالص است که وضعیت فعلی و یک عمل را به عنوان آرگومان می گیرد و یک حالت جدید برمی گرداند. این مانند یک دستگاه تغییر حالت کوچک است. به طور خلاصه، به شما کمک می کند تا وضعیت برنامه خود را به روشی قابل پیش بینی مدیریت کنید.

فرض کنید در حال ساختن یک برنامه لیست کارهای ساده هستید. شما فهرستی از وظایف دارید و می‌خواهید بتوانید کارها را به‌عنوان تکمیل‌شده اضافه، حذف یا علامت‌گذاری کنید. تمام این اقدامات می تواند توسط یک کاهش دهنده انجام شود.

برای مثال، در اینجا یک تابع کاهنده اصلی برای لیست کارهای ما آمده است:

const todoReducer = (state, action) => { switch (action.type) { case 'ADD_TASK': return [...state, action.task]; case 'REMOVE_TASK': return state.filter(task => task.id!== action.id); case 'COMPLETE_TASK': return state.map(task => task.id === action.id? {...task, تکمیل: true } : task ); پیش فرض: وضعیت بازگشت. } }

در این کد،todoReducerتابع جریان را می گیرددولت(که آرایه ای از وظایف است) و یکاقدام. بسته بهاقدام.نوع، یک حالت جدید برمی گرداند.

استفاده از Reducer با Hooks در React

حالا بیایید در مورد نحوه استفاده از این کاهنده با هوک در React صحبت کنیم. React یک قلاب به نام فراهم می کنداستفاده از کاهش دهندهکه ادغام کاهنده ها را در اجزای عملکردی شما بسیار آسان می کند.

در اینجا نحوه استفاده از آن در یک جزء آورده شده است:

وارد کردن React, { useReducer } from'react'; const todoReducer = (state, action) => { switch (action.type) { case 'ADD_TASK': return [...state, action.task]; case 'REMOVE_TASK': return state.filter(task => task.id!== action.id); case 'COMPLETE_TASK': return state.map(task => task.id === action.id? {...task, تکمیل: true } : task ); پیش فرض: وضعیت بازگشت. } } const initialState = []; const TodoApp = () => { const [todos, dispatch] = useReducer(todoReducer, initialState); const addTask = (وظیفه) => { dispatch({ type: 'ADD_TASK', task }); }; const removeTask = (id) => { dispatch({ type: 'REMOVE_TASK', id }); }; const completeTask = (id) => { dispatch({ type: 'COMPLETE_TASK', id }); }; return ( <div> <h1>فهرست کارها</h1> <input type="text" placeholder="Add a task" onKeyDown={(e) => { if (e.key === 'Enter') { addTask({ id: Date.now(), text: e.target.value, تکمیل: false. /ulue . {todos.map(task => ( <li key={task.id}> <span style={{ textDecoration: task.completed? 'line - through' : 'none' }}> {task.text} </span> <button onClick={() => removeTask(task.id)</but=lick. fullTask(task.id)}> {task.completed 'Uncomplete' : 'Complete'} </button> </li> ))} </ul> </div> ); }; صادرات پیش فرض TodoApp.

در اینTodoAppجزء، ما استفاده می کنیماستفاده از کاهش دهندهبرای مدیریت وضعیت لیست کارهای ما. رااستفاده از کاهش دهندهقلاب جریان را برمی گردانددولت(در این مورد،همه) و الفاعزامتابع رااعزامتابع برای ارسال اقدامات به کاهنده استفاده می شود.

هنگامی که کاربر یک کار را در قسمت ورودی تایپ می کند و Enter را فشار می دهد،addTaskتابع نامیده می شود که یک عمل از نوع را ارسال می کند"ADD_TASK". سپس کاهنده حالت فعلی را می گیرد و وظیفه جدید را به آن اضافه می کند.

انواع کاهنده ها در دنیای واقعی

من به عنوان یک تامین کننده کاهنده، با انواع مختلفی از کاهنده ها سر و کار دارم. در دنیای لوله کشی (این نوع دیگری از کاهنده است، اما هنوز خنک است)، انواع رایجی وجود دارد.

یک نوع آن استکاهنده متحدالمرکز Buttweld. برای اتصال دو لوله با قطرهای مختلف در یک خط مستقیم استفاده می شود. نوع دیگر آن استکاهنده رزوه ای، که در مواقعی که نیاز به اتصال لوله هایی با انتهای رزوه دار دارید استفاده می شود. و سپس وجود داردکاهنده جوش غیرعادی، که در مواقعی استفاده می شود که خطوط مرکزی دو لوله باید افست شود.

جالب است که چگونه مفهوم کاهنده در زمینه های مختلف وجود دارد، اما ایده اصلی گرفتن چیزی و تغییر آن به چیز دیگری ثابت می ماند.

مزایای استفاده از کاهنده ها با قلاب

استفاده از کاهنده ها با قلاب در React چندین مزیت دارد.

Eccentric Weld ReducerEccentric Weld Reducer

اول از همه، کد شما را قابل پیش بینی تر می کند. از آنجایی که یک کاهنده یک تابع خالص است، همیشه همان خروجی را برای همان ورودی برمی گرداند. این بدان معنی است که شما به راحتی می توانید کاهنده های خود را آزمایش کنید و متوجه شوید که چگونه وضعیت در برنامه شما تغییر می کند.

ثانیا، به مدیریت پیچیده دولت کمک می کند. در برنامه های بزرگتر، وضعیت می تواند واقعاً پیچیده شود. استفاده از کاهنده ها به شما امکان می دهد مدیریت دولتی را به قطعات کوچکتر و قابل مدیریت تقسیم کنید.

در نهایت، خوانایی کد شما را بهبود می بخشد. وقتی از کاهنده‌ها استفاده می‌کنید، مشخص است که چه اقداماتی می‌توان انجام داد و چگونه بر وضعیت تأثیر می‌گذارد. این امر درک و نگهداری کد را برای توسعه دهندگان دیگر (یا حتی شما آینده) آسان تر می کند.

چالش ها و نحوه غلبه بر آنها

البته، استفاده از کاهنده‌ها با قلاب همگی نور خورشید و رنگین کمان نیست. ممکن است چالش هایی وجود داشته باشد.

یک چالش درک جریان اعمال و تغییرات حالت است. هنگامی که چندین اقدام و وضعیت پیچیده دارید، پیگیری آنچه در حال وقوع است دشوار است. برای غلبه بر این مشکل، می توانید از ابزارهایی مانند React DevTools استفاده کنید که به شما امکان می دهد وضعیت و اقدامات موجود در برنامه خود را بررسی کنید.

چالش دیگر عملکرد است. اگر تابع کاهنده شما محاسبات زیادی انجام می دهد یا حجم زیادی از داده ها برای پردازش دارد، می تواند برنامه شما را کند کند. برای رفع این مشکل، می‌توانید عملکرد کاهنده خود را با استفاده از تکنیک‌هایی مانند حافظه‌سازی بهینه کنید.

نتیجه گیری

خوب، این توضیحی در مورد نحوه استفاده از کاهنده با قلاب در React است. این یک ترکیب قدرتمند است که می تواند برنامه های React شما را به سطح بالاتری برساند. چه در حال ساخت یک برنامه لیست کارهای کوچک باشید یا یک برنامه کاربردی سازمانی در مقیاس بزرگ، کاهش دهنده ها می توانند به شما کمک کنند وضعیت خود را به طور موثرتری مدیریت کنید.

اگر به دنبال کاهنده های با کیفیت بالا برای پروژه های لوله کشی (یا سایر کاربردهای صنعتی) خود هستید، در تماس با آنها درنگ نکنید. من اینجا هستم تا به شما کمک کنم کاهنده مناسب برای نیازهای خود را پیدا کنید. فقط یک پیام برای من ارسال کنید، و ما می توانیم در مورد نیازهای شما صحبت کنیم.

مراجع

  • React مستندات رسمی
  • کتاب الگوهای طراحی جاوا اسکریپت
  • آموزش آنلاین مدیریت React State
ارسال درخواست