调用API并获取列表时出错,而不是从状态列出到列表中的集合。但是setState()
无法正常工作,警告是
_this2.setState不是函数
callGithubApi(){
axios.get("https://facebook.github.io/react-native/movies.json")
.then(function(response)
{
console.log(JSON.stringify(response.data.movies))
this.setState({ // problem is here
list: response.data.movies,
show: false
})
})
.catch(error =>
{
this.setState({ errors : error, show: false })
});
}
答案 0 :(得分:3)
使用ES6的箭头功能:
callGithubApi = () => {
axios.get("https://facebook.github.io/react-native/movies.json")
.then(function(response)
{
console.log(JSON.stringify(response.data.movies))
this.setState({ // proble is here
list: response.data.movies,
show: false
})
})
.catch(error => {
this.setState({ errors : error, show: false })
});
}
否则您必须在构造函数中绑定此功能:
this.callGithubApi = this.callGithubApi.bind(this)
答案 1 :(得分:0)
对该功能以及then()中的功能使用ES6的箭头功能
callGithubApi = () => {
axios.get("https://facebook.github.io/react-native/movies.json")
.then((response) =>
{
console.log(JSON.stringify(response.data.movies))
this.setState({
list: response.data.movies,
show: false
})
})
.catch(error => {
this.setState({ errors : error, show: false })
});
}
答案 2 :(得分:0)
使用粗箭头功能可解决此上下文问题。
callGithubApi(){
axios.get("https://facebook.github.io/react-native/movies.json")
.then((response) =>
{
console.log(JSON.stringify(response.data.movies))
this.setState({ // problem is here
list: response.data.movies,
show: false
})
})
.catch(error =>
{
this.setState({ errors : error, show: false })
});
}