将函数作为稍后要执行的参数传递

时间:2017-11-25 17:40:04

标签: javascript ecmascript-6

我想传递这个功能:

const upgradeAction = () => (
  (dispatch) => {
    closeModal('modal')
    dispatch(showUserInfo())
  }
)

作为参数:

export const checkComplete = () => (
  (dispatch, getState) => {
    dispatch(openModal('modalname', {
      buttonAction: upgradeAction,
    }))
  }
)

单击按钮时调用checkComplete。但是现在单击按钮时无效。我尝试在upgradeAction上使用return,但没有任何作用,checkComplete什么都不做。我做错了什么?!

1 个答案:

答案 0 :(得分:1)

您正在使用redux中间件(可能是redux-thunk)来处理函数操作。当一个函数被调度时,中间件会检测到该函数,并使用dispatchsetState来调用它。

当模态执行buttonAction时,它不会发送它。您需要手动提供dispatch,当按钮调用操作时,它将被调度。



const upgradeAction = (dispatch) => () => {
  closeModal('modal')
  dispatch(showUserInfo())
};

export const checkComplete = () => (dispatch, getState) => {
  dispatch(openModal('modalname', {
    buttonAction: upgradeAction(dispatch),
  }))
}