NSTimer 在 React Native 组件中没有被触发

Posted

技术标签:

【中文标题】NSTimer 在 React Native 组件中没有被触发【英文标题】:NSTimer is not fired in React Native component 【发布时间】:2015-08-10 08:34:02 【问题描述】:

我有一个 React-Native 组件。我想安排一个 NSTime,但它从未被解雇,sendIt 从未被调用

- (void)sendEvent   
  [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(setndIt:) userInfo:nil repeats:YES];


- (void)sendIt:(NSTimer *)timer 
  NSLog(@"Event fired");

【问题讨论】:

我在swift中有一个similar issue,我可以通过在主线程上启动计时器来解决它。 【参考方案1】:

解决方案: 这是由于 React Native 如何与 NSRunLoop 一起工作。 您需要将 NSTimer 添加到mainRunLoop

- (void)sendEvent         
  NSTimer *timer = [NSTimer timerWithTimeInterval:1.5 target:self selector:@selector(sendIt:) userInfo:nil repeats:YES];
  [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];


- (void)sendIt:(NSTimer *)timer 
  NSLog(@"Event fired");

【讨论】:

以上是关于NSTimer 在 React Native 组件中没有被触发的主要内容,如果未能解决你的问题,请参考以下文章

react-native的常用组件及api

react native组件通信

react native 怎么嵌套循环生成组件

如何在组件 React / React-native 的单独页面中使用动态 graphql(字符串)

如何使 Modal 在 react-native 中显示为不同的组件

react-native 如何调用子子组件的方法或者属性