【发布时间】:2020-07-31 02:33:22
【问题描述】:
如何使用onClick 事件来停止重复的函数调用?由于使用了useEffect、setInterval 和clearInterval,函数调用重复出现。
this article 中显示的示例,下面的代码将永远运行。单击<header></header>后如何停止调用该函数?
import React, { useState, useEffect } from 'react';
const IntervalExample = () => {
const [seconds, setSeconds] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setSeconds(seconds => seconds + 1);
}, 1000);
return () => clearInterval(interval);
}, []);
return (
<div className="App">
<header className="App-header">
{seconds} seconds have elapsed since mounting.
</header>
</div>
);
};
export default IntervalExample;
【问题讨论】:
-
你基本上不能,因为你声明它是一个 const ,没有任何东西可以改变他在 useEffect 中的值,所以没有什么能达到它。但是您可以在使用效果之外声明它,并使用
seconds上的 useEffect 或类似的东西来更改interval的值。
标签: reactjs react-hooks setinterval clearinterval use-effect