React Native timemixin取消计时器超时

Has*_*sen 1 javascript mixins settimeout ios react-native

我发现了如何取消Javascript的超时但是如何取消定时器mixin?建议Timermixin在Javascript超时时与React Native一起使用.

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

this.setTimeout(() => {this.setState({results: ' '})}, 1800)
Run Code Online (Sandbox Code Playgroud)

如果执行其他操作,我需要取消它.

Col*_*rsh 5

var clearId = this.setTimeout(() => {this.setState({results: ' '})}, 1800);
this.setState({ clearId: clearId});
Run Code Online (Sandbox Code Playgroud)

...稍后当你想要取消setTimeout调用时

this.clearTimeout(this.state.clearId)  
Run Code Online (Sandbox Code Playgroud)

说明

您可以使用clearTimeout以与常规setTimeout相同的方式取消它.如果尚未调用函数,clearTimeout将阻止该函数运行.

当调用setTimeout时,它" 返回一个表示已设置的计时器的ID值的数字.使用此值和clearTimeout()方法取消计时器. " http://www.w3schools.com/jsref/met_win_settimeout. ASP

由于我想你想在一个单独的函数中调用clearTimeout,你可以将clearId存储为一个状态属性,以便以后可以在一个单独的函数中轻松引用它.

如果想了解更多关于React Native中的Timers的信息,我发现这个文档很有帮助https://facebook.github.io/react-native/docs/timers.html.

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

"我们发现使用React Native创建的应用程序中导致致命的主要原因是由于计时器卸载后计时器被触发." https://facebook.github.io/react-native/docs/timers.html

TimerMixin将避免这种情况,并确保在卸载组件时清除所有Timer调用.