Вы, вероятно, выполняете асинхронную операцию в методах setImageAndGreet
или showTime
, затем обновляете состояние.
Проблема заключается в том, что компонент FastApp
монтируется, запускает асинхронные методы, а затем отключается доОбещания разрешены, потому что значение App.current
за это время изменилось на ложное.
Чтобы решить эту проблему, вы должны отменить асинхронные операции в componentWillUnmount
методе FastApp
или переместить логику вродительский компонент или в приставке.
Рекомендую прочитать этот пост о том, как отменить вызов выборки в componentWillUnmount
Редактировать: Вот как отменить setTimeout:
componentDidMount() {
// Timer declaration
this.myTimer = setTimeout(() => {
this.setState({ someState: 'someValue' });
this.myTimer = 0;
}, 1000);
};
componentWillUnmount() {
// Cancel timer if exists
if (this.myTimer) {
clearTimeout(this.myTimer);
this.myTimer = 0;
}
};
Если вы используете setTimeout
каждую секунду, вы должны использовать setInterval
вместо этого, например:
componentDidMount() {
// Timer declaration
this.myTimer = setInterval(() => {
this.setState({ someState: 'someValue' });
}, 1000);
};
componentWillUnmount() {
clearInterval(this.myTimer);
};