Не работает секундомер (React)

261
17 апреля 2018, 03:55

Добрый день, буду рад, если вы мне поможете.

При нажатии на кнопку 'Start' секундомер начинает идти, однако при нажатии на 'STOP', он не останавливается.

Каждому ответившему плюс в карму ;)

import React, { Component } from 'react'

class Timer extends Component {

constructor(props) {
    super(props)
    this.state = {
        stop: false,
        numb: 0
    }
    this.startTimer = this.startTimer.bind(this)
    this.stopTimer = this.stopTimer.bind(this)
}

startTimer() {
    let timer = setInterval(() => {
        this.setState({numb: this.state.numb + 1})
    }, 1000)
   // this.stopTimer(timer)
   this.state.stop ? this.stopTimer(timer) : null
  }
stopTimer (timer) {
    this.setState({stop: !this.state.stop})
    clearInterval(timer)
}

render() {
  return (

    <div className='timer'>
        <div className="timerNumber">{this.state.numb}</div>
        <div className="flex">
            <input onClick={this.startTimer} value='GO' type="button"/>
            <input onClick={this.stopTimer} value='STOP' type="button"/></div>
    </div>
  );
}

}

export default Timer;

Answer 1

При вызове stopTimer , не передаешь timer

Советую хранить в его в this и при вызове stopTimer делать clearInterval(this.timer)

READ ALSO
Цвет текста на фоне

Цвет текста на фоне

Возник вопрос: Есть панель, которая меняет свой цвет в зависимости от действий пользователя, а на ней должен отображаться текстИз-за того...

154
Как привести в читаемый вид код js?

Как привести в читаемый вид код js?

Нужно редактировать сжатый js-кодНикогда раньше с этим не сталкивался

142
Нужен совет по реализации модульности

Нужен совет по реализации модульности

Опишу суть вопросаЕсть сайт

153
Создать своё событие на jquery

Создать своё событие на jquery

Возможно ли создать своё событие на jquery? Допустим нужно выполнять какое то действие, если у определенного контейнера сменился классПроблема...

165