【发布时间】:2020-11-29 16:28:03
【问题描述】:
我刚开始学习 React,我正在看一个处理状态和钩子的教程。它只处理每 1000 毫秒更新一次的时间(或者我认为是这样)。
import React from "react";
let count = 0;
function App() {
const now = new Date().toLocaleTimeString();
let [time, setTime] = React.useState(now);
function updateTime(){
const newTime = new Date().toLocaleTimeString();
setTime(newTime);
count++;
console.log(count);
console.log(new Date().getMilliseconds());
}
setInterval(updateTime, 1000);
return (
<div className="container">
<h1>{time}</h1>
<button onClick = {updateTime}>time</button>
</div>
);
}
export default App;
本教程的目的只是一个关于如何更新时间的简单示例,但我注意到它每 1000 毫秒更新多次(以突发形式)。我怀疑每次更改挂钩时都会呈现新组件,但旧组件仍然在那里更新并产生更多组件,导致每 1000 毫秒调用似乎呈指数增长。
我很好奇这里发生了什么?我将如何去假设有一个每 1000 毫秒更新一次的简单计数器? setTime(count) 显然不行
【问题讨论】:
-
本文专门介绍了函数式react组件中的setIntervaloverreacted.io/making-setinterval-declarative-with-react-hooks
标签: javascript reactjs react-component