react-native clearInterval在android中不起作用

时间:2018-06-04 20:09:10

标签: javascript react-native

这是我的代码,除了包含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>

1 个答案:

答案 0 :(得分:1)

州不是存储此类参考的正确位置。它并不代表您的观点状态。

由于没有快速干净的方法来执行此操作,请在此处保留超时的引用,这是您的组件。它适用于Android。

this.interval = setInterval(function() {})

另外,不要忘记清除触发componentWillUnmount的时间。