Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在redux中使用reducer进行后端调用可以吗?_Angular_Redux_Redux Store_Ngredux - Fatal编程技术网

Angular 在redux中使用reducer进行后端调用可以吗?

Angular 在redux中使用reducer进行后端调用可以吗?,angular,redux,redux-store,ngredux,Angular,Redux,Redux Store,Ngredux,我正在建立一个有棱角的网站。通常我在onInit方法中进行后端调用,并将数据存储在组件状态中。现在我想把redux添加到我的网站上。我应该在onInit方法上发起操作并在redux reducer中进行实际的后端调用,还是应该在我的组件onInit方法中进行后端调用并在以后将数据添加到redux状态?哪一种方法是正确的?我听说redux reducer应该是纯函数,那么后端调用是否使函数成为纯函数?是的,您不应该在reducer中进行api调用,因为它们应该是纯函数,没有任何副作用 我是否应该在

我正在建立一个有棱角的网站。通常我在onInit方法中进行后端调用,并将数据存储在组件状态中。现在我想把redux添加到我的网站上。我应该在onInit方法上发起操作并在redux reducer中进行实际的后端调用,还是应该在我的组件onInit方法中进行后端调用并在以后将数据添加到redux状态?哪一种方法是正确的?我听说redux reducer应该是纯函数,那么后端调用是否使函数成为纯函数?

是的,您不应该在reducer中进行api调用,因为它们应该是纯函数,没有任何副作用

我是否应该在我的组件onInit方法中进行后端调用并添加 以后是否将数据重新复制到状态


我建议采用这种方法。

您不应该在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())
异步副作用将在调度调用之后,但在减速器执行操作之前发生