Использование thunks в mapDispatchToProps

Я задаюсь вопрос , как использовать создатель асинхронных действий в mapDispatchToPropsтечение react-redux«с connect. Я использую redux-thunkпромежуточное программное обеспечение, и следующее mapDispatchToProps:

function mapDispatchToProps(dispatch) {
    return {
        foo: function() {
            dispatch(someAction());

            return function asyncAction(dispatch, getState) {
                console.log("An async action!");
                dispatch(someOtherAction(getState().foo));
            };
        }
    }
}

Однако, когда я делаю это, действие async не выполняется. Каков правильный способ сделать это?

reactjs,redux,react-redux,

3

Ответов: 1


2 принят

Я предлагаю объявить ваш фактический thunk ( someOtherAction) по-другому. В следующем примере asyncActionсоздается создатель действия async, который возвращает thunk. Затем он может отправлять другие действия (после того, как, например, обещание разрешится).

function asyncActionCreator () {
  return (dispatch, getState) => {
    dispatch(someAction());

    someAsyncStuff().then(() => {
      dispatch(someOtherAction(getState().foo);
    });
  }
}

function mapDispatchToProps(dispatch) {
  return {
    foo: () => dispatch(asyncActionCreator())
  }
}
reactjs, перевождь, реагируют-Redux,
Похожие вопросы