Redux和Redux thunk不同步

时间:2018-05-31 16:39:25

标签: reactjs redux react-redux redux-thunk

我使用redux的假设是调度操作是一个同步任务。

fire action 1 - > store updated
fire action 2 -> store updated

在我正在进行的项目中,我有一个产品定制器,允许一些用户选择,他们可以下多个订单,但如果他们只是订购他们当前的选择并选择“购买”,我会“ addOrder“,将他们的选择添加到订单数组,然后是”购买“操作,这是将存储在redux中的订单提交到我的购物车API的一部分。

我期望我能够依赖于商店处于一致状态,在每次操作后都可靠,所以当第二个动作触发时,它将具有状态,就像它在第一个常规动作之后一样在它面前被解雇,但没有骰子。

  • 我对redux的期望和理解是不正确的?
  • 如果是这样,还是以某种方式在正常派遣之外行动吗?

在我的连接组件中,我发送每个动作:

//.... inside component
purchase = () => {
  this.props.addOrder(); // regular action
  this.props.purchase(); // thunk
};
// ... rest of component

1 个答案:

答案 0 :(得分:3)

是的,除非由中间件更改,否则调度总是 100%同步。是的,默认情况下,您可以在调度后再次调用getState()以获取更新状态:

function checkStateAfterDispatch() {
    return (dispatch, getState) => {
        const firstState = getState();
        dispatch({type : "FIRST_ACTION"});

        const secondState = getState();

        if(secondState.someField != firstState.someField) {
            dispatch({type : "SECOND_ACTION"});
        }    
    }
}