【发布时间】:2019-04-23 00:34:18
【问题描述】:
代码在这里:https://codesandbox.io/s/nw4jym4n0
export default ({ name }: Props) => {
const [counter, setCounter] = useState(0);
useEffect(() => {
const interval = setInterval(() => {
setCounter(counter + 1);
}, 1000);
return () => {
clearInterval(interval);
};
});
return <h1>{counter}</h1>;
};
问题是每个setCounter 触发重新渲染,因此间隔被重置并重新创建。这可能看起来不错,因为状态(计数器)不断增加,但是当与其他钩子结合时它可能会冻结。
这样做的正确方法是什么?在类组件中,它很简单,用一个实例变量来保存间隔。
【问题讨论】:
标签: javascript reactjs react-hooks