موقعی که داشتم با ریکت 18 کار میکردم متوجه یک موضوعی شدم که برام خیلی عجیب بود
اول فکر کردم شاید مشکل از کد منه ولی بعد که رفتم سراغ داکیومنت متوجه شدم که نه بابا ، فیچر جدید ریکت 18 هستش.مثال پایین رو ببینید:
حدس بزنید چی داخل کنسول چاپ شد؟
بله، یوزافکت دوبار محتوارو چاپ میکنه ، به طور خلاصه، این کامپوننت یکبار mountمیشه ، سپس unmountمیشه و سپس دوباره mountمیشه
حالا فرض کنید بخوایم دیتا رو فتچ کنیم چقدر میتونه پرفورمنس اپ رو بیاره پایین ؟بدتر از اون اینه که پروژه بزرگ باشه و رکوست های زیادی رو با یوزافکت بخوایم هندل کنیم !
خود داکیومنت ریکت این رو به عنوان یک فیچر جدید درنظر گرفته
https://beta-reactjs-org-git-effects-fbopensource.vercel.app/learn/synchronizing-with-effects
وقتی در فاز دولوپمنت هستیم به صورت دیفالت از </React.StrictMode >, استفاده میکنیم برای همین این اتفاق برای یوزافکتمون میافته !
حالا کجا این فیچر استفاده میشه ؟
مثال پایین رو ببینید :
با استفاده از ریکت،رفتار کاربر را از زمانی که از چت روم خارج می شه و سپس بهش برمیگرده رو شبیه سازی میکنیم ، این به ما این امکان رو میده تا از ایجاد دو اتصال(به اشتباه )جلوگیری کنیم و برنامه درست پیش بره
ولی خب هنوز مشکل اصلی باپرجاست . دیگه نباید دیتارو داخل یوزافکت بگیریم ، راه های دیگه ای هم وجود داره برای گرفتن دیتا ولی احیانا اگر خواستید از خود یوزافکت استفاده کنید میتونید به روش پایین که دوستان زحمت کشیدن پیش برید :
خودش توصیه کرده از کتابخونه ی react query استفاده کنید
یه راه دیگه هم هست که توصیه نمیشه در اینده ممکنه دردسر ساز بشه اونم اینه که کلا
کامنت بشه </React.StrictMode>
نظر شما چیه ؟
به نظرتون چه راه های دیگه ای وجود داره برای اینکه این مشکل رو حل کنیم ؟
:)مرسی که تا اینجا همراهی کردید امیدوارم مفید بوده باشه براتون