Javascript Redux异步中间件操作不';我手头没有api调用所需的状态

Javascript Redux异步中间件操作不';我手头没有api调用所需的状态,javascript,redux,middleware,react-redux,Javascript,Redux,Middleware,React Redux,我有一个react/redux应用程序,如下所示 用户转到host.com/id Root应用程序获取id并发送一个LOAD\u USER\u DETAILS\u STARTaction w/该id。这将返回用户id,以备其他第三方服务使用 中间件捕获该消息,并对我们的API执行异步调用w/a回调,以便在调用完成时发送LOAD\u USER\u DETAILS\u COMPLETE消息 中间件捕获LOAD\u USER\u DETAILS\u COMPLETE,并使用此新数据触发对第三方API的

我有一个react/redux应用程序,如下所示

  • 用户转到host.com/id
  • Root应用程序获取id并发送一个
    LOAD\u USER\u DETAILS\u START
    action w/该id。这将返回用户id,以备其他第三方服务使用
  • 中间件捕获该消息,并对我们的API执行异步调用w/a回调,以便在调用完成时发送
    LOAD\u USER\u DETAILS\u COMPLETE
    消息
  • 中间件捕获
    LOAD\u USER\u DETAILS\u COMPLETE
    ,并使用此新数据触发对第三方API的几个异步调用 我的问题是,在步骤4中,我只有
    LOAD\u USERS\u DETAILS\u COMPLETE
    操作及其有效负载。我还需要其他应用程序状态(如开始和结束时间)

    目前,我正在使用
    store.getState()
    处理此问题,因为它可以通过中间件签名获得:

    const asyncMiddlewareThing = store => next => action => {
        next(action);
        switch( action.type){
        case LOAD_USERS_DETAILS_COMPLETE:
            let { start, end } = store.getState().contactsFilter.timeframe;
            return store.dispatch(
                createFetchContactsStartMessage(action.payload.zuid, start, end)
            );
    };
    

    这让我觉得我正在打破信息的重复流动。是吗?我这样问是因为我可以看到我需要这样做的几种情况

    我会改用redux thunk。它可以选择在提供的函数中获取状态。

    我将使用redux thunk。它可以选择在提供的函数中获取状态。

    通过
    getState
    访问状态完全可以。不过,您可能会发现,只需在
    操作中传递必要的信息就可以了。通过
    getState
    访问状态完全可以。不过,您可能会发现,只需在
    操作中传递必要的信息就可以了。