【发布时间】:2020-03-23 11:12:55
【问题描述】:
我调用 api 的代码是:
import React from 'react';
import ReactDOM from 'react-dom';
import axios from 'axios';
class Hello extends React.Component{
constructor(props){
super(props);
this.state={
data: "good"
}
this.setdata=this.setdata.bind(this);
}
setdata(){
return axios.get("http://52.14.161.145/1").
then(res=>{
return res.json;
});
}
componentDidMount(){
this.setdata().then(res=>{console.log(res);this.setState({data: res})});
}
render(){
return (<div><p>{this.state.data}</p></div>);
}
}
export default Hello;
我还了解 react 方法的生命周期和 axios 的异步特性以及 fetch api 调用。我可以在 chrome 的网络选项卡中看到响应,但 setdata 总是返回未定义。
另请注意,我正在捆绑反应代码并通过快速服务器提供服务。
我该如何解决这个问题?
【问题讨论】:
-
为什么不在 setData 函数中设置 stae?
-
这也行不通。我已经尝试了几乎所有可能的方法,但都是徒劳的
-
您应该使用 async 和 await,这是一个示例,希望对您有所帮助:medium.com/better-programming/…
-
这是 res.data.json
-
我已经尝试过异步和等待。这就是我在这里发布问题的原因