یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دورهها
استفاده از تخفیفهاسلام. من یه کامپوننت به اسم department دارم. داخل این کامپوننت یه کامپوننت دیگه به اسم storeZone وجود داره و برای انتقال اطلاعات در storeZone از redux استفاده کردم. داخل department یه تابع وجود داره که باید یکی از استیت های storeZone رو آپدیت کنه. این کار شدنیه ؟ با توجه به اینکه storeZone برای department , به عنوان child هست؟
تابعی که میخواد استیت رو در storeZone آپدیت کنه به صورت زیر هست:
zone,stores,storesData,zoneCheck همه از سمت storeZone هستن که صورت props استفاده شدن
handleStoreandZoneLoading = (stores, scheduledTask) => {
this.transformCronsExpressionToData(scheduledTask);
let storeIDs = stores;
let zoneCheck = [];
let store = [];
if (storeIDs) {
this.props.zones.forEach(element => {
element.zoneStores.forEach(item => {
if (storeIDs.some(x => x == item.id)) {
zoneCheck.push(item.id);
item.isChecked = true;
} else {
item.isChecked = false;
}
});
});
}
if (storeIDs) {
this.props.storesData.forEach(item => {
if (storeIDs.some(x => x == item.value)) {
store.push(item.value);
item.isChecked = true;
} else {
item.isChecked = false;
}
});
}
this.props.dispatch(ZoneCheck(zoneCheck));
this.props.dispatch(Stores(store));
}
سلام.
بله شدنیه و چیز عجیبی هم نیست.
این استیت storeZone در داخل خود کامپوننت storeZone تعریف شده یا توی استور ریداکس تعریف شده؟
اگر توی استور تعریف شده با دیسپچ کردن همین اکشن کریتورها استیت مورد نظرتون رو تغییر میدین و بعد ازون طریق connect کامپوننت storeZone رو به اون استیت متصل میکنید.
اون استیتی که گفتم توی استور هستش و باید از department اون رو آپدیت کرد. تست گرفتم همین چیزی که بالا توضیح دادم جواب نداد. الان متوجه شدم که مشکل از اینه که من یه سری API Fetch در داخل تابع compinentDidmount توی storeZone قرار دادم و این کامپوننت فقط وقتی فعال میشه که روی یک دکمه کلیک بشه و مودال اون بیاد بالا. برای همین جواب نمیداد. الان نمیدونم چه کنم تا وابستگی اجراشو به اجرا شدن مودال از بین ببرم
@kamran.davar
@kamran.davar
ببخشید یه سوال دیگه. من تا الان با ریداکس فقط داده ها رو آپدیت کردم و جا به جا کردم. میشه برای function هم این کار رو با ریداکس کرد؟
ببینید شما استیت storeZone رو از هر کامپوننتی که میخواید تغییر میدید و در نتیجه استیت آپدیت شده. حالا هر وقتی کامپوننت storeZone مونت(mount) بشه میره ازون استیت اپدیت شده اطلاعاتشو برمیداره. و شما اگر از فانکشن connect طبق دستورالعملش درست استفاده کنید حتما با هر تغییر استیت در استور کامپوننتون ری رندر میشه. پس ممکنه کانکت رو درست ننوشته باشین.
شه برای function هم این کار رو با ریداکس کرد؟
آره کافیه توی paylod اکشن فانکشن بزارید.
@kamran.davar
میشه براش یه مثال بزنید. برای اینکه گفتین کافیه توی paylod اکشن فانکشن بزاریم تا بتونیم فانکشن رو هم مثل متغیر همه جا استفاده کنیم.
چیزی که مد نظر من بود این بود:
{
type:"ACTION_NAME",
payload:()=>{...}
}
اما این کار رو داکیومتیشن ریداکس توصیه نمیکنه: عنوان لینک مورد نظر
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟