2017-09-26 82 views
3

一直在尝试使用ReactVR,并且我在处理事件方面几乎没有任何疑问。按照Cusors and Input中的文档,找出事件的类型与阅读事件的type一样简单。ReactVR中的事件处理

活动进入onInput可以通过检查 类型字段,这将是 'MouseInputEvent', 'KeyboardInputEvent', 'TouchInputEvent',或一个被进一步过滤 'GamepadInputEvent'

但在下面的代码event.type中给出undefined

_onInput(event) { 
    console.log(event.type);//undefined 
} 

我终于可以做

_onInput(event) { 
    let syntheticEvent = event.nativeEvent.inputEvent; 
    console.log(syntheticEvent.type); 
} 

嗅出事件类型这是预期的行为还是我失去了一些东西。

一些相关的问题

  1. 我们有嗅探与event.nativeEvent事件?
  2. 我们如何找出事件的目标,对于如如果我绑定 的onInput事件为Plane,目前检查 event.nativeEventtarget为数值?不是 有帮助。
  3. 最后,ReactJS调用事件的方式似乎在 ReactVR中不起作用。对于如前我们只是

    <Plane onInput={this._onInput} lit={true} /> 
    

    但这并不工作,在后者,我们必须

    <Plane onInput={(event) => this._onInput(event)} lit={true} /> 
    

    这是为什么?

注:我有一些EXP与ReactJS和零与之反应母语,我猜测ReactVR向后者赦免倾斜,如果很明显

回答

0

这是因为在反应事件对象被重用并在函数作用域之后立即刷新,因此您必须将其作为变量存储以供进一步使用。

+0

erm ...但它还没有出来的功能范围,所以不应该在_onInput()内部访问?问题更多的是为什么我们以这种方式访问​​事件类型,如问题中所述。 – semuzaboi

+0

它在文档中有很好的描述:https://facebook.github.io/react/docs/events.html –