在React中使用循环功能-警告

时间:2018-10-27 20:08:02

标签: javascript reactjs

我试图制作一个单独的回调函数来处理该问题,但是我仍然收到警告,有人知道我应该怎么做吗?

loopCall (index, i) {
    setTimeout(() => {
        this.setState({ img: urls[index] });
    }, i * 900);
};

loop = () => {
    for (var i = 0; i < urls.length; i++) {
        (index => {
            this.loopCall(index, i);
        })(i);
    }
};

初始代码如下:

loop = () => {
    for (var i = 0; i < urls.length; i++) {
        (index => {
            setTimeout(() => {
                this.setState({ img: urls[index] });
            }, i * 900);
        })(i);
    }
};

谢谢

1 个答案:

答案 0 :(得分:0)

我假设您的问题是关于变量i的,因为声明为声明var,声明为var声明的变量的范围是当前变量执行上下文

您可以使用语句let,它声明一个块作用域局部变量,可以选择将其初始化为一个值。

loop = () => {
    for (let i = 0; i < urls.length; i++) {
        let img = urls[i];        
        setTimeout(() => this.setState({ img }), i * 900);        
    }
};