我从服务器接收数据但无法在浏览器上显示。我收到的错误是:
捕获(承诺)TypeError:无法读取属性' setState'未定义的
import React from 'react';
import axios from 'axios';
class App extends React.Component {
constructor(props){
super(props);
this.state={
posts:'hello',
dos:[]
}
};
componentDidMount() {
axios.get(`http://192.168.1.9:8082`)
.then(function(data) {
console.log(data);
this.setState({dos:data});
});
}
render() {
return (
<div>
Hello World!!!
<h1>{this.state.posts}</h1>
<h2>{this.state.dos}</h2>
</div>
);
}
}
export default App;
答案 0 :(得分:0)
它是一个上下文问题,你的错误是你没有一直绑定到匿名函数。你可能想要做的是使用箭头函数,试试这个:
componentDidMount() {
axios.get(`http://192.168.1.9:8082`)
.then(data => this.setState({dos:data}););
}
箭头功能始终保持此背景。
替代解决方案:
componentDidMount() {
axios.get(`http://192.168.1.9:8082`)
.then(function(data) {
console.log(data);
this.setState({dos:data});
}).bind(this);
}
答案 1 :(得分:0)
试试这个:
componentDidMount() {
let self = this;
axios.get(`http://192.168.1.9:8082`)
.then(function(data) {
console.log(data);
self.setState({dos:data});
});
}