繁体   English   中英

反应本地听所有事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM