微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

功能组件:当SetTimeout失败时,为什么SetInterval成功?

如何解决功能组件:当SetTimeout失败时,为什么SetInterval成功?

我最近决定重构代码以采用Hooks方法

在我的一个Class组件中,我在一个函数中运行了该函数(以突出显示两个SVG):

this.setState({left_svgs: true});

setTimeout(function() { //Start the timer

    this.setState({left_svgs: false});
    this.setState({right_svgs: true});
    
    setTimeout(function() { //Start the timer
        this.setState({right_svgs: false});
    }.bind(this),3000)
    
}.bind(this),3000) 

这很好用,但是当我尝试用功能组件替换我的Class组件时,两个setTimeout()突然立即运行,没有任何延迟。

使用箭头功能无效,但是尝试使setInterval()运行一次即可:

setLeft_svgs(true);

var interval = setInterval(function() {
    setLeft_svgs(false);
    setRight_svgs(true);
    var interval2 = setInterval(function() { 
        setRight_svgs(false);
        clearInterval(interval2);
    },6000);
    clearInterval(interval);
},3000);

所以我愿意理解:类和功能组件运行setTimeout()的方式之间有区别吗?它与bind()有关系还是我不知道的?

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。