TypeError:无法读取未定义的属性setState

时间:2017-01-16 04:52:57

标签: reactjs

我从服务器接收数据但无法在浏览器上显示。我收到的错误是:

  

捕获(承诺)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;

2 个答案:

答案 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});
      });
  }