reducer redux-thunk 不调用 reducer

reducer is not invoked by reducer redux-thunk

下面的代码调度 create_event 然后调用 addFlashMessage 操作

export const createEvent = event => {
  return dispatch => {
    dispatch({
      type: "CREATE_EVENT",
      payload: {
        event
      }
    });
    addFlashMessage("Event has been created");
  };
};

addFlashMessage 在操作中被调用
但是 ADD_FLASH_MESSAGE 没有被调用

export const addFlashMessage = message => {
  console.log("action is invoked");
  return dispatch => {
    dispatch({
      type: "ADD_FLASH_MESSAGE",
      payload: {
        message
      }
    });
  };
};

这永远不会被调用

 case "ADD_FLASH_MESSAGE":
            console.log("action called");

您需要 dispatch action 来调用 addFlashMessage,如下所示。

dispatch({type: "ADD_FLASH_MESSAGE",payload:"Event has been created"});

您的代码应如下所示。

export const createEvent = event => {
  return dispatch => {
    dispatch({
      type: "CREATE_EVENT",
      payload: {
        event
      }
    });
   dispatch({type: "ADD_FLASH_MESSAGE",payload:"Event has been created"});
  };
};

您需要 dispatch 才能触发 redux-thunk 函数,而不仅仅是从 createEvent 调用另一个函数。

这是更正后的。

export const createEvent = event => {
  return dispatch => {
    dispatch({
      type: "CREATE_EVENT",
      payload: {
        event
      }
    });
    dispatch(addFlashMessage("Event has been created"));
  };
};