在触发下一行不起作用之前,用axios反应等待数据获取

时间:2019-01-28 21:26:43

标签: javascript reactjs redux react-redux axios

这是我的组件OneRoadmap的简要概述:在异步componentDidMount中,我首先调用“ await this.props.getRoadmaps”,这是Redux中的一个动作,该动作会将get请求发送到我的api,该api将会检索数据库中的项目,然后从检索到的项目中,将调度发送到Reducer,调用GET_ROADMAPS,就像

Dim i As Integer, j As Integer, AdjPln As Integer, cRow As Integer

For i = 0 To 49

AdjPln = 0

cRow = i + 13

 For j = 0 To 9 Step 2

    If Cells(cRow, j + 5).Value <> Cells(cRow, j + 6).Value Then

        AdjPln = AdjPln + 1

    End If

 Next j

Cells(cRow, 24) = AdjPln

Next i

我的组件看起来像:

export const getRoadmaps = () => dispatch => {
dispatch(setRoadmapsLoading());
axios
.get("/api/roadmaps")
.then(res => dispatch({ type: GET_ROADMAPS, payload: res.data }));
};

GET_ROADMAPS将更新我的Redux状态。

问题似乎是:等待。props.getRoadmaps()将只等到getRoadmaps()将调度发送到GET_ROADMAPS,这意味着它不会等到GET_ROADMAPS更新Redux状态 ,这意味着稍后几行,当我执行this.props.roadmap.roadmaps时,它将是未定义的,因为this.props.roadmap.roadmaps可能在GET_ROADMAPS完成更新我的redux状态之前被调用。

如果有解决问题的方法,请引导我:),如果问题不是我认为的那样,请纠正我。

P.S。我引用了https://www.robinwieruch.de/react-fetching-data,该信息通常可以正常使用,但似乎是因为我对redux商店有额外的调度,所以在我调用this.props.roadmap.roadmaps之后,调度会更新该商店。我不确定,无法在渲染中使用该变量

1 个答案:

答案 0 :(得分:2)

似乎您没有返回动作创建者。创建块时必须显式返回(使用花括号)。

返回axios呼叫,它应该可以正常工作。