this.setState不是函数,本机反应

时间:2018-08-23 02:16:30

标签: reactjs react-native this

它告诉我this.setState'是未定义的,但是我不确定我可以做些什么来使“ this”指向setState的正确上下文。我不知道还有什么可以帮忙的。

 import React from 'react';
 import { StyleSheet, Text, View } from 'react-native';
 import axios from 'react-native-axios';

 export default class App extends React.Component {
   constructor(props) {
   super(props);
   this.state = {
     data: 50
   }
   this.apirequest = this.apirequest.bind(this);
 }

  componentWillMount() {
    this.apirequest();
  }

  apirequest() { 

    axios.get('http://api.openweathermap.org/data/2.5/weather')
    .then(function (response) {
      console.log(response.data.main.temp);
      this.setState({
         data: response.data.main.temp 
       })
    })
   .catch(function (error) {
     console.log(error);
    });
}

2 个答案:

答案 0 :(得分:4)

使用then块内的箭头功能来保持作用域:

.then(response => {
  this.setState({
     data: response.data.main.temp 
   })
})

答案 1 :(得分:2)

尝试使用ES6粗箭头功能替换功能

代替

.then(function (response) {...

.then(response => { ...

之所以可行,是因为粗箭头功能没有重新定义this的定义,因此this的值仍然是原始上下文