未定义不是函数(评估'this.setstate(

时间:2018-09-16 14:52:45

标签: reactjs react-native axios

我对本机初学者有所反应。我已经使用“ axios” npm包从API编写了用于fech数据的代码。当我运行时运行正常,但获取数据时则抛出错误。

  

未定义不是函数(评估'this.setstate(

我怀疑此绑定有问题,但是我不知道如何解决它。请帮助我解决此错误。

下面是我的代码:

nop

谢谢。

2 个答案:

答案 0 :(得分:2)

您应该使用箭头功能作为回调:

axios.get('https://facebook.github.io/react-native/movies.json')
    .then(response => {
        // ...
    }

有关更多详细信息,请阅读How to access the correct `this` inside a callback?以了解this的工作原理。

答案 1 :(得分:0)

关于您的错误,发生的原因是您尝试在错误的上下文中访问 this 。一种解决方案是使用箭头功能将正确的上下文绑定到 this 关键字。
我还建议您在componentDidMount生命周期方法中获取数据,使其变为:

componentDidMount() {
  axios.get('https://facebook.github.io/react-native/movies.json')
    .then(response => {
      var moviesList = new ListView.DataSource({
        rowHasChanged: (r1, r2) => r1 !== r2
      });
      this.setState({
        isolate: false,
        movies: moviesList.cloneWithRows(response.data.movies)
      });
    }).catch(function(error) {
      alert(error);
    });
}