我正在我的应用程序中创建空闲计时器,我想在每次点击、滚动等时重置计时器。在每个 onPress 事件上调用我的 resetTimer()
函数似乎是胡说八道。在网络中,我会做事件监听器,如:$(document).mousemove()
, $(document).mousedown()
, $(document).scroll ()
等
关于拥有一些可以在 React native 中的任何触摸事件上调用 resetTimer()
的顶级事件监听器有什么建议吗?
最佳答案
经过一天的调查 rect-native 代码后,我发现了 fbjs 包含 TouchEventUtils
(facebook 在他们的 react native 测试中使用它),它允许使用不同的触摸事件状态函数(onTouchMove(event)
, onTouchStart(事件)
, onTouchEnd(事件)
).
所以我做了什么:
npm install fbjs --save
并且只需将 onTouchStart
添加到包装我的路由的顶级根组件,因此我覆盖了所有屏幕,因为我在所有屏幕/ View 包装器上使用它。
所以我的代码看起来像这样:
/* 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>
)
}
}
就是这样,这就是访问顶级事件监听器并对每个事件执行某些操作的解决方案。我没有深入挖掘(因为这对我的情况来说已经足够了),所以我不确定它得到了什么对象以及它是否可以帮助识别任何进一步的属性(即记录点击的元素)。
关于javascript - React native 监听所有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38694365/