它告诉我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);
});
}
答案 0 :(得分:4)
使用then
块内的箭头功能来保持作用域:
.then(response => {
this.setState({
data: response.data.main.temp
})
})
答案 1 :(得分:2)
尝试使用ES6粗箭头功能替换功能
代替
.then(function (response) {...
做
.then(response => { ...
之所以可行,是因为粗箭头功能没有重新定义this
的定义,因此this
的值仍然是原始上下文