承诺没有在redux thunk中返回

时间:2019-04-03 04:36:40

标签: reactjs react-native redux react-redux redux-thunk

我是react-redux的新手。这就是我要做的,

我有一个类似的动作

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

现在,在我的容器中,我想调用一个在此之后将被调用的动作,

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



case UPDATE_ACTIVEPAGE:  {
      console.log("action payload", action.payload);
      return {
        ...state,
        activePage: action.payload
      }
    }

因此,在这里,我尝试使用then,但收到一个错误,提示Uncaught TypeError: _this.props.updateActivePage(...).then is not a function

那我做错了什么?

2 个答案:

答案 0 :(得分:1)

您从根本上在滥用redux-thunk。该库的预期用途是调度一个动作创建者(在这种情况下为updateActivePage),该动作创建者返回一个使用状态参数调用的函数。您应该分派updateActivePage,因为这是您的重击。同样,这是应该包含您的计算的函数,然后应将结果放入状态。看来您正在直接调用此函数,并且由于某种原因希望它返回一个Promise,然后以某种方式进行一些计算。您应该重新访问那些笨拙的文档。

答案 1 :(得分:0)

public class TaskController : ApiController
{
    [HttpGet]
    [Route("GetAffectedCIs/{number}")]
    public ListResponse<TaskCiResultFlat> GetAffectedCIs(string number)
    {
        ......
    }
}

调度不是一个承诺,它只是一个功能。

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

您能尝试像我上面提到的那样兑现诺言吗?