但我在尝试。我需要从api获取json。我收到错误:
TypeError:无法读取undefined(...)
的属性'setState'
{{1}}
为什么我不能使用 componentDidMount 中的setState?
答案 0 :(得分:0)
componentDidMount: function() {
var self = this;
axios.get('https://api')
.then(function (response) {
self.setState({data: response.data})
console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
console.log('mount ' + self.state.data );
},
当调用this
时,它指的是axios请求而不是组件,所以需要设置一个变量this
,当你执行{{1}时,该变量引用你的组件实例它来自右this.setState
答案 1 :(得分:0)
当你使用this
时你需要知道如何使用,因为上下文,你可以做两件事
...
var setState = this.setState
axios.get('https://api')
.then(function (response) {
setState({data: response.data})
})
...
或者你可以做
...
axios.get('https://api')
.then(function (response) {
this.setState({data: response.data})
}.bind(this))
...