Как изменить значение интервала в React - PullRequest
0 голосов
/ 15 октября 2018

Я пытался изменить значение интервала при использовании ReactJ, но не могу заставить его работать.Я искал это, но не нашел ничего полезного (или, возможно, я не получил это во время чтения).У меня большая часть кода внутри компонента класса.

Мой код выглядит следующим образом:

class Timer extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      tickS: 1000,

      ...
    };
  }
  componentDidMount() {
    this.intervalID = setInterval(
      () => this.tick(),
      this.state.tickS
    );
  }
  tick(){
    this.setState({
      ...

      tickS: 10**Math.log10(this.state.tickS + this.state.clicksChange),

      ...
    });
  }
}

Он работает для использования 1000 миллисекунд, но когда я пытаюсь переопределить состояниеиз tickS, это не работает.

1 Ответ

0 голосов
/ 15 октября 2018

Вы не можете изменить интервал setInterval.Вместо этого вы можете использовать другой подход и использовать setTimeout для той же цели.Посмотрите на пример:

class Timer extends React.Component {
  constructor(props) {
    super(props);
    this.ticks = 1000;
  }

  componentDidMount() {
    this.timeoutID = setTimeout(
      () => this.tick(),
      this.tick
    );
  }

  tick() {
    this.setState({
      ...
    });

    this.ticks = 10 ** Math.log10(this.ticks + this.state.clicksChange),

    this.timeoutID = setTimeout(
      () => this.tick(),
      this.ticks
    ); 
  }
}
...