【发布时间】:2021-07-19 15:40:27
【问题描述】:
我想做一个倒数计时器(25 分钟)。这是 App.js 文件中的代码
import './App.css';
import React, { useState } from 'react';
function App() {
const [remainingTime, setRemainingTime] = useState(1500);
const [seconds, setSeconds] = useState(0);
const [minute, setMinute] = useState(remainingTime/60);
function timer() {
setRemainingTime(remainingTime-1);
let newMinute = remainingTime/60;
let minuteArray = [...newMinute.toString()];
setMinute(parseInt(minuteArray.slice(0,2).join("")));
setSeconds(remainingTime%60);
console.log(minute);
console.log(seconds);
}
return (
<div className="App">
<div className="pomodoro">
<div className="timer">{minute}:{seconds}</div>
<div className="button-container">
<button className="start" onClick={() => setInterval(timer, 1000)}>start</button>
</div>
</div>
</div>
);
}
export default App;
间隔不更新状态值。分钟值始终为 25,秒值始终为 0。当我不使用 setInterval 而只使用这样的计时器功能时
<button className="start" onClick={timer}>start</button>
每次单击开始按钮时,值都会发生变化。任何想法?我知道我也应该使用 clearInterval 但我不知道该放在哪里。我应该创建一个包含 setInterval 和 clearInterval 的新函数吗?
【问题讨论】:
标签: reactjs react-hooks setinterval use-state