Почему моя функция внутри componentDidMount не запускается? - PullRequest
0 голосов
/ 31 марта 2020

В следующем фрагменте почему this.setInterval не запускается при монтировании компонента?

class MyComponent extends React.Component {

  constructor(props) {
    super(props);
    this.setInterval = this.setInterval.bind(this);
  }

  setInterval = () => {
    console.log('Set Interval');
    setTimeout(function () {
        console.log('Test');
    }, 2000);
  }

  componentDidMount() {
    this.timer = this.setInterval;
  }
}

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы должны вызывать функцию все время, передавая ссылку.

  componentDidMount() {
    this.timer = this.setInterval;
  }

должно быть

  componentDidMount() {
    this.timer = this.setInterval();
  }
0 голосов
/ 31 марта 2020
 setInterval = () => {
    console.log('Set Interval');
    setTimeout(function () {
        console.log('Test');
    }, 2000);
  }

  componentDidMount() {
    this.timer = this.setInterval();
  }

Вам нужно вызвать setInterval () следующим образом. В componentDidMount он выполняется только один раз при начальной загрузке компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...