я не спец на реакте, больше во vue разбираюсь
но тут 2 варианта либо localStorage, либо date.now()
первый вариант сложно расписать, поэтому извини)
но второй я использовал примерно вот так
handleStart = (event) => {
event?.stopPropagation();
const startTime = Date.now();
const { min, sec } = this.state;
this.setState({
isCounting: true,
startTime,
remainingTime: min * 60 + sec
});
this.counterID = setInterval(() => {
const elapsedTime = Math.floor((Date.now() - startTime) / 1000);
const remainingTime = Math.max(0, this.state.remainingTime - elapsedTime);
const newMin = Math.floor(remainingTime / 60);
const newSec = remainingTime % 60;
this.setState({ min: newMin, sec: newSec });
if (remainingTime === 0) {
this.handlePause();
this.props.onCheckBoxClick();
}
}, 1000);
};
Не забудь очищать, не помню как в реакте точно это называлось componentwillUnmount что-ли ()=>{clearInterval(this.counterIdD)}