使用 setInterval 函数更新 React 组件的状态
Updating React component's state with setInterval function
我正在研究 React 中的 Timer 实现。
export default function Parent() {
const [count, setCount] = useState(0);
function start() {
setInterval(() => {
setCount(count + 1);
}, 1000);
}
return (
<>
<div>Parent Component</div>
<p> value of count is: {count}</p>
<button onClick={start}>Start counter</button>
</>
);
}
当我点击开始计数器按钮时,它只会增加一次计数,
不知何故,我发现我需要使用 useEffect。但不知道该怎么做。
请帮忙。
经典计时器陈旧状态错误。您正在访问计时器间隔回调函数中的关闭陈旧状态。
这可以通过使用功能状态更新轻松解决,因此您不会使用关闭的初始状态值。
export default function Parent() {
const [count, setCount] = useState(0);
function start() {
setInterval(() => {
setCount(count => count + 1);
}, 1000);
}
return (
<>
<div>Parent Component</div>
<p> value of count is: {count}</p>
<button onClick={start}>Start counter</button>
</>
);
}
演示
我正在研究 React 中的 Timer 实现。
export default function Parent() {
const [count, setCount] = useState(0);
function start() {
setInterval(() => {
setCount(count + 1);
}, 1000);
}
return (
<>
<div>Parent Component</div>
<p> value of count is: {count}</p>
<button onClick={start}>Start counter</button>
</>
);
}
当我点击开始计数器按钮时,它只会增加一次计数, 不知何故,我发现我需要使用 useEffect。但不知道该怎么做。
请帮忙。
经典计时器陈旧状态错误。您正在访问计时器间隔回调函数中的关闭陈旧状态。
这可以通过使用功能状态更新轻松解决,因此您不会使用关闭的初始状态值。
export default function Parent() {
const [count, setCount] = useState(0);
function start() {
setInterval(() => {
setCount(count => count + 1);
}, 1000);
}
return (
<>
<div>Parent Component</div>
<p> value of count is: {count}</p>
<button onClick={start}>Start counter</button>
</>
);
}