Имеется компонент в React JS:
import React, {Component} from 'react';
export default class RebootSitePopup extends Component {
constructor(props) {
super(props);
this.state = {timer: 0};
}
componentDidMount() {
this.startTimer();
}
componentWillUnmount() {
this.deleteTimer();
}
startTimer() {
if (this.interval) {
clearInterval(this.interval);
}
this.setState({timer: this.props.time_to_reboot});
this.interval = setInterval(
() => {
this.setState({timer: this.state.timer - 1});
if (this.state.timer === 0) {
clearInterval(this.interval);
console.log('clearInterval');
}
},
1000
)
}
deleteTimer() {
if (this.interval) {
clearInterval(this.interval);
}
this.setState({timer: 0});
}
render() {
return (
<div className="reality-check__overlay">
<div className="reality-check__modal">
<div className="reality-check__modal-inner">
<div className="reality-check__title">{gettext("common__page_will_be_reloaded")}</div>
<div className="reality-check__sub-title">
{gettext("common__page_will_be_reloaded_after")}: {this.state.timer} />
</div>
</div>
</div>
</div>
);
}
}
Смысл в том, что компонент должен просто рендерить небольшую форму с таймером. В this.props.time_to_reboot
хранится время до выключения таймера (например, число 10). Как работает мой таймер:
Как можно "выровнять" таймер, чтобы между каждой итерацией была задержка 1 секунда?
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть код htmlКак мне выбрать data-id у option при клике? Мучаюсь два часа
Есть имя файла и файл в формате base64Если размер файла превышает 2mb, то браузер chrome говорит что имеется ошибка сети
Есть сайт на wordpress c установленным плагином для краудфайндинга