【发布时间】:2016-08-10 00:39:14
【问题描述】:
我正在尝试在 react-native 中设置一个基本计时器,但它不起作用。我在控制台中没有错误。它只是简单地忽略了setInterval。我阅读了 ES6 的 TimerMixin 问题(不支持)。那么,如果您只想使用基本的 setInterval 计时器,还有什么选择?因为它根本无法以此处显示的最简单形式工作...
import React, { Component } from 'react';
import { AppRegistry, Text } from 'react-native';
class HelloWorldApp extends Component {
componentDidMount() {
console.log('COMPONENTDIDMOUNT')
//this.timer= <--//This doesn't work either
var timer = setInterval(() => {
console.log('I do not leak!');
}, 5000);
}
componentWillUnmount() {
console.log('COMPONENTWILLUNMOUNT')
clearInterval(timer);
}
render() {
return (
<Text>Hello world!</Text>
);
}
}
AppRegistry.registerComponent('HelloWorldApp', () => HelloWorldApp);
【问题讨论】:
-
那么您在控制台中看到什么了吗?
-
I will use this.timer = this.timer(bind).this;... 为什么?这没有任何意义 -
我明白,但我在评论代码中的评论,并指出我怀疑问题是您的 setInterval 回调不起作用
-
让我直截了当地说 - 你在控制台上得到
COMPONENTDIDMOUNT和COMPONENTWILLUNMOUNT,但在控制台上你永远不会得到I do not leak!- 即使前两者之间的间隔超过 5 秒? -
我已将您的代码缩减到最低限度,并且工作正常(一旦您在两个地方都使用 this.timer)