首页 > 解决方案 > 使用 setInterval 每秒增加变量 - 不更新

问题描述

在我的功能组件中,我定义了两个钩子started:falsesec: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。这是有原因的吗?

标签: javascriptreactjssetintervalincrement

解决方案


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();


推荐阅读