本文介绍了获取setState不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我遇到以下错误
JSX:
componentDidMount(){
$.ajax({
url:'http://intelligencevillage.wxtui.cn/index.php/Api/HomepageWebview/getHomepageData/area_id/5',
dataType:'json',
cache:false,
}).done(function({data}){
this.setState({
lis1:[data.banner]
})
})
}
我知道这是某种约束性的问题,但我不知道如何解决.感谢您的帮助.
I understand that its some sort of binding issue, but I don't know how to fix it. Any help is appreciated.
推荐答案
问题与函数执行范围有关.
The problem is with Function Execution Scope.
componentDidMount(){
$.ajax({
...
}).done(function({data}){
///// HERE {this}
// try console.log(this);
// you will see there is no`setState`
this.setState({
lis1:[data.banner]
})
})
}
现在,在 done
链内的函数,此
仅在函数内引用.
Now, function inside the done
chain, this
reference only inside the function.
componentDidMount(){
$.ajax({
url:'',
dataType:'json',
cache:false,
}).done(({data}) => {
this.setState({
lis1:[data.banner]
})
})
}
这篇关于获取setState不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!