setTimeout внутри компонента вызывается независимо от страницы - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть вызов setTimeout, который вызывается каждые 5 минут.Проблема в том, что независимо от того, на какой странице я нахожусь, тайм-аут все еще вызывается и выполняет вызовы API.

Мой компонент setTimeout находится внутри домашней страницы, что было бы идеально, если бы убить только этот компонент, когда нетбольше на главной странице.Я хотел бы избежать уничтожения компонента домашней страницы и необходимости повторного извлечения данных.

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

    sendCords(){
       this.props.actions.findCords()
       this.beginTimeout()
    }

    beginTimeout(){
       let timer = setTimeout(this.sendCords,300000);
       this.setState({timer});
    }

Примечание: перехватывает жизненный цикл EG componentWillUnMount не вызывается, так какстраницы похожи на стопку - и страницы не демонтируются.Я использую response-native-router-flux

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 декабря 2018

Что ж, в итоге мне пришлось сделать несколько вещей, в своих действиях я проверял, на какую страницу я звонил, и отправлял пустое действие, если оно не было вызвано на главной странице.Это вызовет явный тайм-аут.Потребовалось принудительное обновление для моего компонента

<Comp refresh={() => this.setState({val:!this.state.val} />

И тогда я должен был бы использовать mustComponentUpdate, например, при переходе обратно на домашнюю страницу и при необходимости снова установить время ожидания:

shouldComponentUpdate(nextProps, nextState){
    if(this.props.removeTimer && !nextState.removeTimer){
        this.timeOutFunc()
}
...