Angular 在redux中使用reducer进行后端调用可以吗?
我正在建立一个有棱角的网站。通常我在onInit方法中进行后端调用,并将数据存储在组件状态中。现在我想把redux添加到我的网站上。我应该在onInit方法上发起操作并在redux reducer中进行实际的后端调用,还是应该在我的组件onInit方法中进行后端调用并在以后将数据添加到redux状态?哪一种方法是正确的?我听说redux reducer应该是纯函数,那么后端调用是否使函数成为纯函数?是的,您不应该在reducer中进行api调用,因为它们应该是纯函数,没有任何副作用 我是否应该在我的组件onInit方法中进行后端调用并添加 以后是否将数据重新复制到状态Angular 在redux中使用reducer进行后端调用可以吗?,angular,redux,redux-store,ngredux,Angular,Redux,Redux Store,Ngredux,我正在建立一个有棱角的网站。通常我在onInit方法中进行后端调用,并将数据存储在组件状态中。现在我想把redux添加到我的网站上。我应该在onInit方法上发起操作并在redux reducer中进行实际的后端调用,还是应该在我的组件onInit方法中进行后端调用并在以后将数据添加到redux状态?哪一种方法是正确的?我听说redux reducer应该是纯函数,那么后端调用是否使函数成为纯函数?是的,您不应该在reducer中进行api调用,因为它们应该是纯函数,没有任何副作用 我是否应该在
我建议采用这种方法。您不应该在reducer中进行后端调用: reducer是一个纯函数,它接受前一个状态和一个操作,并返回下一个状态 以及: 没有副作用。没有API调用。没有突变。只是计算一下 Redux中的副作用可以通过或在普通Redux中间件中进行副作用调用来实现 在这些选项中,redux thunk是最容易开始的。它允许您在操作中执行异步/副作用
//store.js
从“redux thunk”导入thunk;
const myReduxStore=createStore(myRootReducer,applyMiddleware(thunk));
//actions.js
常量myAction=(someArg)=>{
返回调度=>{
myApiCall()。然后(结果=>{
分派({type:'YAY_SUCCESS',result})
})
}
}
那么当你发出动作的时候
dispatch(myAction())
异步副作用将在调度调用之后,但在减速器执行操作之前发生