在componentDidMount中,我试图从/api/topics/${params.TopicId}路由获取名为topic的数据,然后我只想将topic.user_id发送到另一个路由,并获得整个用户作为响应。但是这不起作用,因为它们同时发送请求,所以topic.user_id的状态为空。有没有办法可以取出响应的一部分并将其提供给另一个请求?我正在componentDidMount中进行此操作,因此它将在组件呈现之前完成。
componentDidMount() {
const {
match: { params }
} = this.props;
axios
.get(`/api/topics/${params.TopicId}`)
.then(response => {
this.setState({ topic: response.data });
})
.catch(function(error) {
console.log(error);
});
axios
.get(`/api/users/${this.state.topic.user_id}`)
.then(response => {
this.setState({ user: response.data });
})
.catch(function(error) {
console.log(error);
});
}
axios.get
调用的响应中提取user_id
,一旦第一个调用返回,就开始下一个调用,同时设置状态的topic
部分。然后在第二个请求返回时设置状态的user
部分。由于user
和topic
状态是独立的,它们可以以任何顺序设置,并且立即启动第二个请求将提高性能。 - Brian Adams