我有一个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
任何帮助将不胜感激。
答案 0 :(得分:0)
好吧,我最终不得不做一些事情,在我的操作中,我将检查我正在调用的页面,如果未在主页上调用它,则将调度一个空操作。这将触发清除超时。
<Comp refresh={() => this.setState({val:!this.state.val} />
然后,当导航回主页并需要再次设置超时时,我将使用shouldComponentUpdate,如下所示:
shouldComponentUpdate(nextProps, nextState){
if(this.props.removeTimer && !nextState.removeTimer){
this.timeOutFunc()
}