درود دوستان 👋 یکی از تصمیماتی مهمی که هنگام پیادهسازی یک استیت توی ریاکت باید در نظر داشته باشیم اینه که اون استیت رو کجا نگهداری کنیم. توی ریاکت گزینههای متنوعی وجود داره، مثل نگهداری توی کامپوننت و کپسولهسازی اون (لوکال استیت) و یا استفاده Context API و State Management اختصاصی که دو مورد آخر برای نگهداری استیتهای اشتراکی استفاده میشن. توی این پست میخوایم در رابطه با استیتهای اشتراکی صحبت کنیم و مشخص کنیم کدومشون توی کجاها به کارمون میان.
این پست از مجموعه پستهای ریاکت ۱۰۱ هست که شامل مجموعهای از پستهای کوتاه و کاربردی ریاکتی میشه. بریم که به ادامهٔ این پست بپردازیم.
چه زمانی Context API رو ترجیح بدیم؟
استفاده از Context API زمانی پیشنهاد میشه که:
۱. استیت مد نظر ما ماهیت خیلی سادهای داره و خیلی کم پیش میاد که مقدار اون تغییر کنه. مثل تم برنامه، زبان و یا اطلاعات مربوط به احراز هویت کاربر. همونطور که میدونید، وقتی مقدار یک استیت توی کانتکست تغییر میکنه، این اتفاق باعث ایجاد ری-رندر توی کامپوننتهایی میشه که دارن از این کانتکست استفاده میکنن و پیامد اون ممکنه ایجاد رندرهای مجدد توی کامپوننتهای داخلی باشه. بنابراین در نظر گرفتن این موضوع اهمیت داره.
۲. استیت مد نظر ما ساختار خیلی پیچیدهای یا داینامیک نداره. مثلاً یک آبجکت با عمقهای زیاد گزینهٔ مناسبی نیست برای نگه داشته شدن توی کانتکست.
۳. نمیخوایم از کتابخونههای خارجی مثل Redux استفاده کنیم و امکانات داخلی خود ریاکت جوابگوی نیاز ما هست.
۴. موضوع سرعت و عملکرد معیار خیلی با اهمیتی برای ما نیست.
چه زمانی یک State Management رو ترجیح بدیم؟
بهتره یک State Management مثل Redux و Zustand رو زمانی ترجیح بدیم که:
۱. با یک استیت پیچیده سر و کار داریم که بروزرسانی اون کار سادهای نیست. مثل آبجکت سفارشهای کاربر (Orders).
۲. به ویژگیهای پیشرفته برای مدیریت و نظارت بر استیت احتیاج داریم. مثل Middleware و DevTools و عملیات Async.
۳. استیت به دفعات مکرر آپدیت میشه و معیارهایی مثل سرعت و عملکرد برنامه برامون اهمیت داره.
۴. نیاز به یک ساختار منظمتر برای مدیریت استیت داریم تا بتونیم برنامهای قابل توسعه داشته باشیم و از ابزارهای دیباگینگ استفاده کنیم
نتیجهگیری
درست مثل هر ابزار دیگهای میبایست قبل از استفاده از تکنیکها و قابلیتهای بالا، شرایط فعلی رو در نظر بگیریم و ببینیم کدوم روش مناسبتر به نظر میاد. استفاده از کانتکست یک روش خیلی ساده برای مدیریت استیتهای ساده به حساب میاد، و برای پیادهسازی اون با پیچیدگی خاصی مواجه نیستیم. اما ابزارهای مدیریت استیت مثل ریداکس کاربردهای حرفهایتری و پیادهسازی نسبتاً پیچیدهتری دارن و استفاده نادرست از اون ممکنه روند توسعه رو سختتر کنه.
امیدوارم از اطلاعاتی که بررسی کردیم استفاده کرده باشین. روزتون خوش 😉🌹
