React Native setState не функция
Может кто-нибудь объяснить мне, почему это.setState - это не функция ?
Я не вижу, почему в моем коде есть ошибка
import React from 'react';
import axios from 'axios'
import { StyleSheet, Text, View , Image} from 'react-native';
export default class App extends React.Component {
constructor(){
super();
this.state = {res: []}
}
componentDidMount() {
axios.get('https://api.github.com/repos/torvalds/linux/commits')
.then(function (response) {
this.setState({res: response});
}).catch(function (error) {
console.log(error);
});
}
}
Спасибо
2 ответа:
Это
lexical scope
проблема. Использованиеarrow function
..then((response) => { this.setState({ res: response }); })
Причина ошибки в том, что
this
не ссылается на контекст класса компонента в функции решателя axios. Вы можете использовать функцию resolver в качестве функции fat arrow для работы вашего кода, как показано ниже:componentDidMount() { axios.get('https://api.github.com/repos/torvalds/linux/commits') .then((response) => { this.setState({res: response}); }).catch(function(error) { console.log(error); }); }
Или вы можете изменить его на что-то вроде ниже:
componentDidMount() { let self = this; axios.get('https://api.github.com/repos/torvalds/linux/commits') .then(function(response) { self.setState({res: response}); }).catch(function(error) { console.log(error); }); }