javascript - 使用 setInterval 每秒增加变量 - 不更新
问题描述
在我的功能组件中,我定义了两个钩子started:false
和sec:0
let interval = null
const Home = () => {
const [sec, setSec] = useState(0)
const [started, setStarted] = useState(false)
所以顾名思义,每一秒我都想增加这个计数器。我有一个方法叫它setTimer
应该增加我的sec
每一秒。
function setTimer() {
console.log(started)
if (!started) {
console.log(started)
setStarted(true);
interval = setInterval(() => {
setSec(sec+1)
console.log("ADDED",sec)
}, 1000)
}
}
但似乎 sec 计数器从未超过 1。这是有原因的吗?
解决方案
let started = false;
let sec = 0;
let setSec = function(seconds) { sec = seconds; }
let setStarted = function() { started = true; }
function setTimer() {
console.log(started)
if (!started) {
setStarted(true);
console.log(started)
interval = setInterval(() => {
setSec(sec+1)
console.log("ADDED",sec)
}, 1000)
}
}
setTimer();
推荐阅读
- android - Date.getTime() 返回前一天
- android - 我可以将非主键字段作为房间中的自动生成值吗
- intellij-idea - Intellij IDEA 运行配置系统环境与操作系统环境不匹配
- javascript - 加载后AngularJS可以编译由外部库附加的HTML吗?
- java - 如何处理任何 TCP 传入连接?所有端口或端口范围
- html - 调整屏幕大小时徽标居中问题
- c++ - 每次在文件中写入时,如何在前面附加文本?
- c# - 如何将类对象列表添加到类中?
- c# - c# utf-8 与德语变音符号的转换问题
- pdf - Saxon / Fop / PDF 在 Chrome/Edge 中有奇怪的粗线,但在 Firefox / Safari 中没有