clearinterval 在反应钩子中不起作用

时间:2021-01-11 13:37:43

标签: javascript reactjs

我正在创建一个简单的计时器,当用户点击开始计时器时,计时器开始,当用户点击停止计时器时,计时器停止。但是 clearinterval 不起作用,我什至尝试过

df1
Date-Time                A    B    C    D
2012-01-11 7:10:05:00    0    1    2    3
2012-01-11 7:14:05:00    0    1    2    3
2012-01-11 7:16:05:00    0    1    2    3
2012-01-11 7:25:05:00    0    1    2    3
2012-01-11 7:31:05:00    0    1    2    3

df2
Date-Time                A    B    C    D
2012-01-11 7:10:05:00    6    8    1.5  6.8
2012-01-11 7:25:05:00    0    11   4    3.3
2012-01-11 7:31:05:00    0    44   2.2  3.3

1 个答案:

答案 0 :(得分:0)

唯一一次调用 clearInterval 时,id 未定义。 (也就是说,它被声明为该函数作用域内的一个变量,但没有为其设置值。)您需要存储该 id 的值,以便以后可以访问它。由于这是一个 React 组件,因此 state 是一个合理的存储位置。例如:

const [intervalId, setIntervalId] = useState(0);

然后在设置间隔时设置那个状态:​​

setIntervalId(setInterval(() => setSeconds(sec => sec + 1), 1000));

然后当您清除间隔时,您可以使用状态中的 ID 值:

clearInterval(intervalId);