2016-03-06 65 views
1

我发现如何取消Javascript的超时,但我怎样才能取消定时器混合?推荐使用Timermixin与JavaScript超时的React Native一起使用。React本机timemixin取消定时器超时

var TimerMixin = require('react-timer-mixin'); 

this.setTimeout(() => {this.setState({results: ' '})}, 1800) 

我需要有其他动作的执行它取消。

回答

1

解决方案

var clearId = this.setTimeout(() => {this.setState({results: ' '})}, 1800); 
this.setState({ clearId: clearId}); 

...某处后,当你要取消的setTimeout调用

this.clearTimeout(this.state.clearId) 

说明

可以取消它以同样的方式你会定期setTimeout,通过使用clearTimeout。如果函数尚未被调用,clearTimeout将阻止函数运行。

当setTimeout的被调用时,它“返回表示所设置的定时器的ID值的数。使用此值与clearTimeout()方法来取消计时器。http://www.w3schools.com/jsref/met_win_settimeout.asp

由于我想象你要调用clearTimeout在一个单独的功能,您可以将clearId存储为状态属性,因此它可以很容易地在后面一个单独的函数引用。

如果想了解更多关于定时器在本地做出反应,我发现这个文档有用https://facebook.github.io/react-native/docs/timers.html

另外

通过使用TimerMixin(而不是常规的setTimeout方法),setTimeout调用将被自动如果组件卸除防止。很有用!这就是为什么你应该确保使用TimerMixin而不是普通的Timer方法。

“我们发现,在应用与创造是严重错误的主要原因阵营母语是由于计时器烧成后的组件已卸载。” https://facebook.github.io/react-native/docs/timers.html

TimerMixin将避免这种情况,并确保组件卸载时清除所有定时器调用。