React Native 监听所有事件

Min*_*gas 2 javascript mobile event-listener react-native

我正在我的应用程序中创建空闲计时器,我想在每次点击、滚动等时重置计时器。resetTimer()在每个 onPress 事件上调用我的函数似乎是无稽之谈。在网上,我会做的事件监听器,如:$(document).mousemove()$(document).mousedown()$(document).scroll()等。

关于拥有一些可以调用resetTimer()React Native 中的任何触摸事件的顶级事件侦听器的任何建议?

Min*_*gas 5

调查矩形的本地代码的一天后,我发现FBJS包含TouchEventUtils(Facebook的使用在他们本地的反应测试),它允许使用不同的触摸事件状态的功能(onTouchMove(event)onTouchStart(event)onTouchEnd(event))。

所以我做了什么:

npm install fbjs --save
Run Code Online (Sandbox Code Playgroud)

并简单地添加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>
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

就是这样,这就是访问顶级事件侦听器并对每个事件执行某些操作的解决方案。我没有深入挖掘(因为这对我来说已经足够了),所以我不确定它得到了什么对象,以及它是否可以帮助识别任何进一步的属性(即记录点击的元素)。

  • 请注意,不需要导入 TouchEventUtils。onTouchStart 是 View 组件的内置支持 prop。 (3认同)