首页 > 解决方案 > 是否可以在应用程序中有条件地清除 setInterval?

问题描述

我从输入的 onChange 调用此函数:

const [timekeep, setTimekeep] = useState<NodeJS.Timeout>()
function callChangeColor(newUrl: string) {
  if (changeColor === true) {
    setChangeColor(false)
    clearInterval(timekeep)
    let intervalId = setInterval(() => {
      getLaunchState(newUrl)
    }, 4000)
    setTimekeep(intervalId)
    return getLaunchState(newUrl)
  } else {
  return strLaunch
  }
}

我不想有几十个 setInterval ,但我似乎找不到在每次新更改后清除间隔的方法。clearInterval(timekeep) 也有问题,因为它的类型为 'Timeout | undefined' 而不仅仅是 'Timeout' 并创建一个 setInterval 给 useState 会破坏创建 timekeep 状态的目的。

标签: setintervalreact-typescript

解决方案


推荐阅读