更新反应状态后调用异步操作

时间:2019-04-02 11:17:51

标签: javascript reactjs redux react-redux

我是react js的新手。我有一个动作,

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

在我的减速器中,

const initialState = {
 activePage: 1,
}
case UPDATE_ACTIVEPAGE:  {
      return {
        ...state,
        activePage: activePage
      }
    }

在我的容器中,

handlePageChange = (pageNumber) => {
    this.props.updateActivePage(pageNumber);
    this.props.fetchUserJd(this.props.activePage);
  }

现在,我仅在成功完成上一个操作后才调用此this.props.fetchUserJd(this.props.activePage);函数。因为这没有任何回报。

现在,我有一个解决方案,即回调函数。 但是在某种程度上.then不可用,因为第一个函数没有返回任何承诺。任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:在mapDispatchToProps中,fn返回如下操作:

function mapDispatchToProps(dispatch) {
    return {
         updateActivePage: (pageNumber) => {
            return new Promise((resolve, reject) => {
                dispatch(actions.updateVisualState(pageNumber, resolve, reject));
            });
        }
};

在这种情况下,您将可以在视图中使用then进行操作:

this.props.updateActivePage(pageNumber).then(()=>{
  this.props.fetchUserJd(this.props.activePage);
})

您只需要选择正确的位置即可兑现承诺。