首页 > 解决方案 > 使用 react-redux 为一个简单的动作创建者返回一个承诺

问题描述

我是 react-redux 的新手。在这里,我认为这是一个非常基本的问题。但是,我有一个动作创建者,我正在使用一个 redux thunk。

export const updateActivePage = (activePage) => {
  return {
    type: UPDATE_ACTIVEPAGE,
    payload: activePage
  }
}

我尝试的是

export const updateActivePage = (activePage) => (dispatch) => {
  return new Promise( function(resolve, reject) {
    dispatch({
      type: UPDATE_ACTIVEPAGE,
      payload: activePage
    })
  })
}

之后的函数没有被调用。

现在,在我componentdidmount.then在这之后使用

所以,为此我想回报一个承诺。那么,我该怎么做呢?我正在使用reux-thunk

标签: javascriptreactjsredux

解决方案


当您想从外部源(如 REST)获取一些数据时,会使用 Promise。但是,如果您真的想这样做,动作创建者必须返回一个函数:

export const updateActivePage = (activePage) => {
  return (dispatch) => {
    return dispatch ({
      type: UPDATE_ACTIVEPAGE,
      payload: activePage
    });
  }
}

像这样的东西应该返回承诺。然而,这个承诺将在动作被派发时被解决。它与 redux 状态更改不同。我认为您并不想在这里使用承诺。

如果你想在 redux 状态发生变化时做出反应,你的组件应该观察状态(使用 mapStateToProps)并且你可以处理componentWillUpdate方法的变化。


推荐阅读