من تو دوره 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
دوست عزیز اینطوری نیست داستان
شما اول در برنامهاتون از axios اطلاعاتی که مد نظر هست رو دریافت میکنید دریافت کردید حالا هر چی که هست acion مربوطه رو فراوخونی میکنید اگرم نیاز باشه از طریق action اطلاعاتی جدید دریافتی رو پاس میدید.
هیچ وقت داخل reducer نیاید از درخواست ajax استفاده کنید.
سلام. هنگام کار با redux درخواست های http رو بهتره به action ها منتقل کنید.برای اینکار میتونین از middleware های redux-thunk یا redux-saga استفاده کنید.پیشنهاد من thunk هستش بخاطر ساده تر بودن. لینک زیر میتونه کمکتون کنه
https://daveceddia.com/what-is-a-thunk/
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟