这是我的组件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之后,调度会更新该商店。我不确定,无法在渲染中使用该变量
答案 0 :(得分:2)
似乎您没有返回动作创建者。创建块时必须显式返回(使用花括号)。
返回axios呼叫,它应该可以正常工作。