Countdown counter does not stop in Zero [closed]

-3

Countdown timer does not stop when it reaches "0". I need the stopwatch stop when it reaches "0" and when clicking the "start" button it starts with the set value, which is "1 min" and decrements to "0" again. The Stop and Add 1 Minute buttons are working.

Below is the code for the buttons:

    this.iniciarCronometro = this.iniciarCronometro.bind(this);
    this.pararCronometro = this.pararCronometro.bind(this);
    this.tempoFormatado = this.tempoFormatado.bind(this);
    this.somarUmSegundo = this.somarUmSegundo.bind(this);
    this.state = {
      contadorSegundo: 0,
      contadorMinuto: 1,
    };
  }

  iniciarCronometro() {
    var intervalId = setInterval(this.somarUmSegundo, 100);
    this.setState({
      intervalId: intervalId,
    });
  }

  pararCronometro() {
    clearInterval(this.state.intervalId);
    this.setState({
      contadorSegundo: 0,
      contadorMinuto: 1,
    });
  }

  somarUmMinuto() {
    this.setState({
      contadorMinuto: this.state.contadorMinuto + 1,
    });
  }

The code below makes the stopwatch work. The way it is implemented the counter does not stop when it reaches "0". I need it to stop when zeroing and when I call the start function it starts from set value "1".

somarUmSegundo() {
    let segundos = this.state.contadorSegundo;
    let minutos = this.state.contadorMinuto;

    minutos == 1 || segundos > 0;
    if (segundos == 0) {
      segundos = 59;
      minutos = minutos - 1;
    } else {
      segundos = segundos - 1;
    }

    this.setState({
      contadorSegundo: segundos,
      contadorMinuto: minutos,
    });
  }
    
asked by anonymous 28.10.2018 / 22:35

1 answer

1

Your somarUmSegundo() function does not make much sense. Try this:

somarUmSegundo() {
    if (this.state.contadorSegundo == 0) {
        if (this.state.contadorMinuto > 0) {
            this.setState(antigo => ({
                contadorMinuto: antigo.contadorMinuto - 1
                contadorSegundo: 59
            }));
        }
        else {
            clearInterval(this.state.intervalId);
            return;
        }
    }

    this.setState(antigo => ({
        contadorSegundo: antigo.contadorSegundo - 1
    }));
}
    
29.10.2018 / 01:07