Как сделать секундомер? react
Мне надо сделать секундомер на react.js чтобы одна кнопка начинала таймер, а вторая его останавливала и очищала( и отправляла время в базу данных) я не особо понимаю как сделать две отдельные кнопки но с одной у меня таймер выходит
вот код с одной кнопкой:
class Timer extends Component {
constructor() {
super();
this.state = { minute: 0, second: 0 };
this.updateTimer = this.updateTimer.bind(this);
this.resetTimer = this.resetTimer.bind(this);
}
updateTimer() {
this.setState((state) => {
return {
second: state.second === 59 ? 0 : state.second + 1,
minute: state.second === 59 ? state.minute + 1 : state.minute
};
});
}
resetTimer() {
this.setState({ minute: 0, second: 0 });
}
render() {
return (
<>
<p>
{this.state.minute}:{this.state.second}
</p>
<Toggle updateTimer={this.updateTimer} resetTimer={this.resetTimer} />
</>
);
}
}
class Toggle extends Component {
constructor(props) {
super(props);
this.state = { isToggleOn: false };
this.interval = null;
// This binding is necessary to make `this` work in the callback
this.handleClick = this.handleClick.bind(this);
}
componentDidUpdate(prevProps, prevState) {
if (prevState.isToggleOn !== this.state.isToggleOn) {
if (this.state.isToggleOn) {
this.interval = setInterval(this.props.updateTimer, 1000);
} else {
clearInterval(this.interval);
this.props.resetTimer();
}
}
}
handleClick() {
this.setState((prevState) => ({
isToggleOn: !prevState.isToggleOn
}));
}
render() {
return (
<button onClick={this.handleClick}>
{this.state.isToggleOn ? "OFF" : "ON"}
</button>
);
}
}
помогите пж
Ответы (1 шт):
Автор решения: Евгений Николаев
→ Ссылка
Самый просто способ, добавить еще одну кнопку, с таким же обработчиком. А за счет атрибута disabled делаем активной нужную кнопку. Чтобы записать в базу, перед сбросом счетчика, отправляем данные на сервер.
render() {
return (
<div>
<button
disabled={this.state.isToggleOn}
onClick={this.handleClick}
>
START
</button>
<button
disabled={!this.state.isToggleOn}
onClick={this.handleClick}
>
STOP
</button>
</div>
);
}
