javascript - React 在 setInterval 中使用 useEffect 丢失状态
问题描述
我在 useEffect 中使用 setInterval 来触发函数以秒为间隔执行。但是,当回调被执行时,state 的值就是默认 state 的值,为什么?
import React, { useState, useEffect, useCallback } from "react";
import "./styles.css";
export default function App() {
const [count, setCount] = useState(0);
useEffect(() => {
const i = setInterval(testando, 1000);
return () => clearInterval(i);
}, []);
const testando = () => {
console.log(count); --> here value is 0
setCount((prev) => prev + 1);
};
return (
<div className="App">
<h1> {count} </h1> --> here value is right
<button onClick={() => setCount((prev) => prev + 200)}> Teste </button>
</div>
);
}
解决方案
useEffect(() => {
const i = setInterval(testando, 1000);
return () => clearInterval(i);
}, [count]);
推荐阅读
- python - 有没有办法对嵌入字典中的字典的内容求和?
- python - IDLE 中的缩进线
- typescript - OneToOne 加入 Foalts 和 Typeorm
- firebase - Firebase 托管和 Github 操作错误“auth/invalid-api-key”
- prolog - Prolog 元解释器和单面统一
- excel - Excel VBA 需要 Wb.activate 的原因
- r - Dplyr 使用字符串变量作为表达式重命名
- java - 从外部 jpanel 类中移动 JFrame
- python - 将保存在 np.array 中的十六进制图像转换为在 opencv 中导入
- javascript - 在我的 chrome 扩展中从内容发送数据以响应应用程序