不理解反应中的状态

时间:2016-10-19 21:59:57

标签: javascript reactjs

但我在尝试。我需要从api获取json。我收到错误:

  

TypeError:无法读取undefined(...)

的属性'setState'
{{1}}

为什么我不能使用 componentDidMount 中的setState?

2 个答案:

答案 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))
 ...