با استفاده از Thunk middleware میتوانیم action های Redux رو از object های ساده به متد های هوشمند تبدیل کنیم. یکی از استفاده های معروفی که از این هوشمند سازی میشه, ارسال درخواست های http از طریق action هاست. اگه به نمونه کد زیر نگاه کنیم در کنار مزیت انتقال درخواست ها به این بخش متوجه یه سری معایب هم میشویم:
اگه در کل پروژه همین یک درخواست رو داشتیم مشکلی نبود, ولی خب اینجوری نیست! در حقیقت تعداد زیادی درخواست داریم که مثلا بخش پردازش خطاهای بازگشتی از این درخواستها تقریبا مثل هم انجام میشه, پس بهتره یه کد اصلی برای انجام کلیه درخواست هامون داشته باشیم.
میتونیم دوباره با middleware ها مشکلمون رو حل کنیم, مثلا هر بار که خواستیم درخواست http داشته باشیم این action رو dispatch کنیم:
و یه middleware داشته باشیم که در صورت dispatch شدن 'API_REQUEST' اطلاعات لازم رو از meta object بگیره و درخواست رو انجام بده:
حالا اگه بخواهیم مثلا baseURL رو هم تغییر بدیم فقط همین قسمت از کد نیاز به تغییر داره یا حتی میتوانیم loading رو به سادگی به همه درخواست هامون اضافه کنیم:
به همین تمیزی! برای اضافه کردن middleware به store از اینجا کمک بگیرین.