获取setState不是函数

获取setState不是函数

本文介绍了获取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不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 02:35