当前位置: 首页 > 知识库问答 >
问题:

javascript - React 中 clearInterval为什么无效?

蔡鸿骞
2023-11-23

为什么clearinterval不生效?

react的项目,在函数组件中定义了定时器容器:

var timer = {    sto: [], //存延时器    siv: [], //存循环器};

想通过鼠标移入控制定时器启停
于是定义了

function handleMouseOver(){    if(timer.siv.length>0){        timer.siv.forEach(siv=>clearInterval(siv))    }else{        timer.siv.forEach(siv=>clearInterval(siv));        timer.siv.push(setInterval(()=>{console.log("xxx")},50));    }}

共有1个答案

常海
2023-11-23

我就不给你说原因了,解决方案是这个timer对象要么放在函数组件之外,要么用useRef包裹。

 类似资料:
  • 我在一个页面上有多个滑块,除了不能正常设置和清除间隔外,其他一切都正常工作。我试图在调用next和prev函数时重置setInterval。在我单击next或prev之后,clearInterval工作,滑块都停止了,但是当新的setInterval运行时,奇怪的事情发生了。 理想情况下,我想为页面上的每个滑块这样做,但我甚至不能全局地让它工作(这意味着一次重置页面上的所有滑块)。 谢谢你的反馈!

  • get_user_record()此函数调用在数据库中提取数据的方法。我使用超时是因为我不想从这个方法得到响应,showUpdatedProgressBar()方法不断地检查数据库计数,并相应地给进度条赋值。为此,我使用了setInterval()函数,该函数正在工作,但无法清除间隔。请告诉我哪里出错了。

  • 今天在工作中遇到一个react hooks问题,虽然解决了但是对于其中的原因不太理解,这里发出来和大家一起讨论一下。 具体代码如下,场景步骤如下: 点击一次,执行running后,isPolling设为true,并触发polling的useEffect 快速再点击一次,执行running,因为running前执行了cancle,所以这时候running内的isPolling应该是false,但实际

  • 如图所示,好像也没写错呀,然后package.json里是这样写的 在这里先谢谢给位大哥大姐们的回答,小弟感激不尽

  • 问题内容: 由于JavaScript不是从Java派生的,为什么它的名称中带有“ Java”? 问题答案: JavaScript最初名为Mocha,后来又重命名为LiveScript,然后又重命名为JavaScript。 将LiveScript更改为JavaScript的名称是因为Netscape和Sun达成了许可协议。 然后将该语言提交给ECMA国际组织进行标准化处理。到那时,Netscape不

  • 问题内容: 我找不到这个JSFiddle有什么问题。 HTML: JavaScript: 当我单击按钮时-什么也没发生。控制台显示“测试未定义” 我已经阅读了JSFiddle文档-那里说JS代码已添加到并且HTML代码已添加到(因此,此JS代码早于html,应该可以使用)。 问题答案: 该函数是在装入处理程序中定义的,因此属于不同的范围。正如@ellisbben在注释中指出的那样,您可以通过在对象