在触发下一行不起作用之前,React等待使用axios进行数据提取



以下是我的组件OneRoadmap的简要概述:在异步组件DidMount中,我首先调用"wait this.props.getRoadmaps",这是我的Redux中的一个操作,该操作将向我的api发送get请求,该api将从我的数据库中检索项目,然后,从检索到的项目中,我们向Reducer发送调度,调用get_RODMAPS,这与类似

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

我的组件看起来像:

async componentDidMount() {
await this.props.getRoadmaps();
var location1 = this.props.location.pathname;
var n = location1.slice(9);
var current_roadmaps = this.props.roadmap.roadmaps;
this.displayRoadmap = current_roadmaps.filter(
eachRoadmap => eachRoadmap._id == n
);
// now we have a roadmap
this.setState({
treeData: this.displayRoadmap[0].roadmap[0],
loading: false
});
}

GET_RODMAPS将更新我的Redux状态。

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

如果有任何方法可以解决这个问题,请指导我:)如果问题不是我认为的那样,请纠正我。

p.S.我参考https://www.robinwieruch.de/react-fetching-data,那里的这些信息通常会起作用,但似乎是因为我有一个额外的调度到我的redux存储,调度在我调用this.props.roadmap.roadmaps后更新存储,这意味着我没有定义,不能在我的渲染中使用该变量

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

返回您的axios调用,它应该可以正常工作。

最新更新