javascript - 我需要从不同的函数调用 ClearInterval

标签 javascript reactjs react-native setinterval clearinterval

我正在创建一个倒计时器,我需要从不同的函数调用clearInterval,因为我想使用两个不同的按钮开始和暂停倒计时

这是我的一段代码

const startCountdown = () => {
    const countdown = setInterval(() => {
      setSecondsElapsed(secondsElapsed => secondsElapsed - 1);
    }, 1000);
  };

  const pauseCountdown = () => {
    clearInterval(countdown);
  };

当我按下初始按钮时,倒计时开始,但当我按下调用 pauseCountdown() 的按钮时,倒计时不会暂停

最佳答案

使用 React ref 来保存计时器引用。设置间隔时,将倒计时引用存储为引用的当前值,并在其他函数中使用引用的当前值清除间隔。

const countDownRef = React.useRef();

const startCountdown = () => {
  countDownRef.current = setInterval(() => {
    setSecondsElapsed(secondsElapsed => secondsElapsed - 1);
  }, 1000);
};

const pauseCountdown = () => {
  clearInterval(countDownRef.current);
};

关于javascript - 我需要从不同的函数调用 ClearInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68213303/

相关文章:

javascript - Angular 尝试读取服务中的属性

javascript - 使用 React Hooks 从 Prismic API 获取数据

javascript - 将外观输入字段更改为日期选择器中的按钮

javascript - 打开子页面(弹出页面)时如何模糊/禁用父组件?

javascript - 从父未定义事件触发子函数

android - Jitpack与www合作。但并非只有我

react-native - 调度了不受支持的顶级事件类型 "topScroll"

javascript - 为 Web 应用程序连接多个表

javascript - 使用 Vue Bootstrap 表中另一列数据路径的 Vue Router 链接

javascript - 如何在ajax选项卡上设置简单的淡入/淡出效果