在setstate之后执行的函数中的访问变量

时间:2019-06-13 21:23:43

标签: javascript reactjs

我需要在reactjs“ sync”中设置状态。我这样做的方法是使用回调:

myFunction(){
    var arr = [];

    for(var i = 0 ; i > 100; i++){
        arr[i] = i;
    }

    this.setState({
        someValue: 999
    }, () => {
        //this.arr return undefined
        return this.arr;                
    });
}

我几乎可以确定这是一个范围界定问题。我以为它具有箭头功能应该可以工作吗?我尝试使用“ this”而不使用“ this”,但是它是未定义的。

2 个答案:

答案 0 :(得分:0)

您是对的,这是范围界定。此内部箭头函数不引用函数的arr

如果您真的想使用匿名功能,则可以这样做

myFunction(){
    var arr = [];
    for(var i = 0 ; i > 100; i++){
        arr[i] = i;
    }
    var xyz = function()  {
        //this.arr return undefined
        return this.arr;                
    };
    this.setState({
      someValue: 999
    }, xyz);
}

这是一篇很好的箭头功能文章。 https://medium.com/tfogo/advantages-and-pitfalls-of-arrow-functions-a16f0835799e

答案 1 :(得分:-1)

请勿使用var定义变量(您可以阅读有关使用var进行作用域定义并让其使用的信息

在情况为var i = 0的情况下使用let