繁体   English   中英

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

[英]React await for data fetch with axios to happen before triggering next line is not working

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

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_ROADMAPS将更新我的Redux状态。

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

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

PS我引用了https://www.robinwieruch.de/react-fetching-data ,该信息通常可以正常工作,但由于我有一个额外的调度到我的redux商店,该调度在我更新后更新了商店调用this.props.roadmap.roadmaps,这意味着我无法定义并且不能在渲染中使用该变量

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM