我用的是react,redux,redux和redux.
我的代码看起来是:
function thunkFunction(){
return(dispatch) => {
dispatch(toggleSmth(false));
dispatch(toggle2Smth(false));
SomeService.getSmth()
.then(response => {
dispatch(oneMoreAction);
dispatch(one2MoreAction);
}
}
}现在,我在某个组件中在componenDidMount()之后分派整个thunk操作。
它的工作原理是:
问题是:
为什么一旦调度等待整个堆栈清除。在承诺中,在调度组件被自动重命名之后,它返回到下一个承诺函数元素?
此外,当我将分派(toggleSmth(False))放入承诺中时,如下所示:
function thunkFunction(){=
return(dispatch) => {
SomeService.getSmth()
.then(response => {
dispatch(toggleSmth(false));
dispatch(toggle2Smth(false));
dispatch(oneMoreAction);
dispatch(one2MoreAction);
}
}
}dispatch(toggleSmth(false))和dispatch(toggle2Smth(false))自动复制器组件。(而不是等待清除回调堆栈'}')。在reender进入下一个->到第一个dispatch(oneMoreAction);之后
为什么一旦调度导致自动复写器,而又必须等待函数内部元素的执行?
发布于 2017-08-11 12:44:33
我想你对两件事有一点误解:
在最基本的级别上,您正在调用一个thunk操作( proimise),它总共调用4次调度。每次您调用一个修改状态的操作时,该状态所接触的组件(通过mapStateToProps)都会重新呈现。
当您将所有分派函数置于一个异步调用(即嵌套一次)下(本例中为SomeService.getSmth().then(() => {...});))下,会导致这些函数相对于其他异步调用同步触发.但是,该组件仍然重新呈现,因为它被正在被修改的状态所触摸。
在第一种情况下,两个分派的调用是同步的,然后服务调用与其他两个调度一起进行,直到服务调用结束
https://stackoverflow.com/questions/45629299
复制相似问题