不论页面

时间:2018-12-18 01:23:04

标签: react-native redux react-native-router-flux

我有一个setTimeout调用,每5分钟调用一次。问题是,无论我在哪个页面上,超时仍然会被调用并正在进行api调用。

我的setTimeout组件位于主页内,理想的是在不再位于主页上时仅杀死该组件。我想避免破坏主页组件,而不必重新获取数据。

我的setTimeout代码是这样的:

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

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

注意:生命周期挂钩E.G.由于页面就像堆栈一样,未调用componentWillUnMount,并且页面也没有卸载。我正在使用react-native-router-flux

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

好吧,我最终不得不做一些事情,在我的操作中,我将检查我正在调用的页面,如果未在主页上调用它,则将调度一个空操作。这将触发清除超时。

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

然后,当导航回主页并需要再次设置超时时,我将使用shouldComponentUpdate,如下所示:

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