[英]React native listen to all events
我正在应用程序中创建空闲计时器,并且每次单击,滚动等时都想重置计时器。在每个onPress事件上调用resetTimer()
函数似乎是胡说八道。 在网络中,我会做事件监听器,例如: $(document).mousemove()
, $(document).mousedown()
, $(document).scroll()
等。
关于在React本机中的任何触摸事件上拥有一些可以调用resetTimer()
顶级事件侦听器的任何建议?
调查矩形的本地代码的一天后,我发现FBJS包含TouchEventUtils
(Facebook的使用在他们的反应本地测试),它允许使用不同的触摸事件状态的功能( onTouchMove(event)
, onTouchStart(event)
, onTouchEnd(event)
)。
所以我做了什么:
npm install fbjs --save
只需将onTouchStart
添加到我的顶级Root组件中即可包装路线,因此,当我在所有屏幕/视图包装器上使用它时,我将覆盖所有屏幕。
所以我的代码看起来像这样:
/* rest of my imports */
import TouchEventUtils from 'fbjs/lib/TouchEventUtils';
class Root extends Component {
onTouchStart(){
//my code to properly reset session timer
}
render() {
return (
<View
onTouchStart={this.onTouchStart}
>
{/*My routes*/}
</View>
)
}
}
就是这样,这是访问顶级事件侦听器并对每个事件执行操作的解决方案。 我没有更深入地研究(因为这足以满足我的情况),所以我不确定它得到的对象以及它是否可以帮助识别任何其他属性(即记录单击的元素)。
我认为没有官方的API。
在研究如何将Cycle.js与React Native结合使用的过程中 ,我们做了实验,尝试对BatchedBridge模块定义的__fbBatchedBridge
全局补丁进行猴子补丁,以侦听来自本机端的所有全局事件。
它不适合我们,因为我们得到的只是原始的触摸事件,并且无法针对不同类型的事件类型进行过滤。 但是,如果您真正想要的是知道何时发生触摸事件,则该解决方案可能对您有用。
当然,它会很脆弱而且很容易:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.