阵营本地监听所有事件
我在我的应用程序创建空闲计时器,我想每次点击,滚动复位定时器等。这似乎是一句废话来调用每一个onPress事件我resetTimer()
功能。在网上,我会做的事件侦听器,如:$(document).mousemove()
,$(document).mousedown()
,$(document).scroll()
等阵营本地监听所有事件
任何建议上有一些顶级的事件侦听器可以调用resetTimer()
上的任何触摸事件作出反应本土?
调查矩形的本地代码,我发现fbjs包含TouchEventUtils
(Facebook的使用在他们本地的反应测试),它允许经过一天的使用不同的触摸事件状态的功能(onTouchMove(event)
,onTouchStart(event)
,onTouchEnd(event)
)。
所以我做了什么:
npm install fbjs --save
,只需添加onTouchStart
到到wrapps我的路我的顶级根组件,因此,我为我使用它在所有屏幕的所有画面覆盖/视图包装。
所以我的代码看起来是这样的:
/* 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>
)
}
}
并且那是,那是对accesing顶级事件侦听器,并做一些对每一个事件的解决方案。我没有深入挖掘(因为这对我的情况来说已经足够了),所以我不确定它得到的是什么对象,以及它是否有助于确定任何其他属性(即记录被单击的元素)。
我不认为这是一个官方的API为这一点。
由于调查我们如何使用Cycle.js with React Native的一部分,我们做了实验猴修补由BatchedBridge模块定义的__fbBatchedBridge
全球监听来自本地侧进入全球所有的事件。
这是不适合我们,因为所有我们得到的是原始的触摸事件,这是不可能的筛选不同种类的事件类型。但是,如果您确实需要知道何时发生触摸事件,那么该解决方案可能适用于您。
它将,当然,是脆,哈克:)
很高兴再次见到你(我们见过@ Cycle.js的conf)! :)好的建议,就像你说的那样有点拙劣,但我认为这足够我需要。 :) –
哈哈这很有趣,正是在CycleConf,我首先开发了这个黑客。虽然没有认出你的名字,但只是一个纯粹的巧合:) – jevakallio
谢谢!这正是我需要的屏幕保护功能。 – pmont
请注意,导入TouchEventUtils不是必需的。 onTouchStart是View组件的内置支持道具。 – pmont
你是我的救星! – Bigdragon