【发布时间】:2021-01-21 00:34:47
【问题描述】:
我正在尝试通过一些简单的项目来学习 React,但似乎无法理解以下代码,因此希望得到解释。
这个来自简单倒计时功能的 sn-p 工作正常;但是,当我使用 console.log 时,setTime 似乎正确更新了“秒”的值,但是当我在 console.log(time) 之后立即给我原始值 3。这是为什么呢?
奖励问题 - 当函数 startCountdown 被调用时,我的 JSX 中出现的正确时间值会有延迟,我认为这是由于变量“秒”被填充和 setInterval 函数的开始,所以我不倒计时不能顺利准确地开始。有没有办法解决这个问题?
const [ time, setTime ] = useState(3);
const [ clockActive, setClockActive ] = useState(false);
function startCountdown() {
let seconds = time * 60;
setClockActive(true);
let interval = setInterval(() => {
setTime(seconds--);
console.log(seconds); // Returns 179
console.log(time); // Returns 3
if(seconds < 0 ) {
clearInterval(interval);
}
}, 1000)
};
【问题讨论】:
-
从您的
App中删除StrictMode包装标签 -
不,害怕。删除了 StrictMode,我仍然看到带有 2 个不同值的 console.log。
标签: reactjs