من تو دوره react اقای موسوی شرکت کردم و الان با یک مشکل برخورد کردم
من از redux دارم برای پیاده سازی معماری flux استفاده میکنم
ببینید من یک فایل reducer دارم که داخلش action هارو تحلیل میکنه و برای هر action میاد یکسری کارا رو میکنه و در نهایت state های جدید رو برمیگردونه .
تا قبل از استفاده کردن از axios همه چیز خوب بود . اما الان وقتی از axios استفاده کردم مشکل خوردم .
سناریو به این شکل هست که اکشن add صدا زده میشه و با axios ما میایم مقادیر جدیدرو داخل db اعمال میکنیم و یک ارایه رو تغییر میده و اونو به عوان مقدار جدید بر میگردونه .
اما بعد از اینکه سیستم میره داخل تابع then و تغییراتو اعمال میکنه بعدش دیگه ارایه من (mytodos) بروز رسانی نمیشه
const my_project_state={
todos:[],
}
function reducer_for_todos2(state=my_project_store, action){
if(action.type=='add'){
let mytodos=state.todos;
/*
* اعمال تغییرات بر روی دیتابیس به صورت ایجکس توسط اکسیوس
* */
axios.post(`https://react-course-b6946.firebaseio.com/todos.json`,...action.value)
.then(r=>{
mytodos=[...state.todos,action.value];
console.log(r)
})
.catch(e=>{
console.log(e)
})
/*
*
* مشکل اینجا هست که بعد از موفقیت آمیز بودن درخواست axios ما ( تابع then ) , مقادیر داخل then برای return اعمال نمیشه
*
* */
return{
todos:mytodos,
}
}
return state;
}
export default reducer_for_todos2;من از promis ها هم استفاده کردم اما نتونستم پیادش کنم .
ممنون میشم راهماییم کنید جناب موسوی @hesammousavi
شاید پاسخ شما همینجا باشد
سلام. هنگام کار با redux درخواست های http رو بهتره به action ها منتقل کنید.برای اینکار میتونین از middleware های redux-thunk یا redux-saga استفاده کنید.پیشنهاد من thunk هستش بخاطر ساده تر بودن. لینک زیر میتونه کمکتون کنه
https://daveceddia.com/what-is-a-thunk/