【问题标题】:React Native timemixin cancel timer timeoutReact Native timemixin取消定时器超时
【发布时间】:2016-03-06 05:57:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript ios react-native settimeout mixins


    【解决方案1】:

    解决方案

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

    ...稍后当您想取消 setTimeout 调用时

    this.clearTimeout(this.state.clearId)  
    

    说明

    您可以使用 clearTimeout 以与常规 setTimeout 相同的方式取消它。 clearTimeout 将阻止该函数在尚未被调用时运行。

    调用 setTimeout 时,它“返回一个数字,表示设置的计时器的 ID 值。将此值与 clearTimeout() 方法一起使用以取消计时器。http://www.w3schools.com/jsref/met_win_settimeout.asp

    由于我想您会想在单独的函数中调用 clearTimeout,因此您可以将 clearId 存储为状态属性,以便稍后在单独的函数中轻松引用它。

    如果想了解更多关于 React Native 中定时器的信息,我发现这个文档很有帮助 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 调用。

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 2018-06-09
      • 2017-11-23
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多