这是我的代码,除了包含clearInterval的stopTimer方法之外,一切都很好:
componentDidMount() {
this.insertArray();
that = this;
this.setState({
interval: setInterval(function() {
let elapsed_time=(Math.floor(Date.now() / 1000)) - that.state.data;
that.setState({
elapsed: that.secondsToHms(elapsed_time)
});
}, 1000)
});
}
secondsToHms(d){
d = Number(d);
var h = Math.floor(d/3600);
var m = Math.floor(d%3600/60);
var s = Math.floor(d%3600%60);
return ('0' + h).slice(-2) + ":" + ('0' + m).slice(-2) + ":"+ ('0' + s).slice(-2);
}
stopTimer(){
clearInterval(this.state.interval);
}
这就是我如何调用stopTimer方法:
<TouchableOpacity onPress={()=>this.stopTimer()>
<Text>stopTimer</Text>
</TouchableOpacity>
答案 0 :(得分:1)
州不是存储此类参考的正确位置。它并不代表您的观点状态。
由于没有快速干净的方法来执行此操作,请在此处保留超时的引用,这是您的组件。它适用于Android。
this.interval = setInterval(function() {})
另外,不要忘记清除触发componentWillUnmount的时间。