3

一直在尝试 ReactVR,我对处理事件几乎没有疑问。根据Cusors and Input中的文档,找出事件的类型就像阅读事件一样容易type

可以通过检查类型字段来进一步过滤进入 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事件绑定到 a Plane,目前正在检查 event.nativeEvent给出的target作为一个数值?一点帮助都没有。
  3. 最后,ReactJS 调用事件的方式似乎在 ReactVR 中不起作用。例如,在前者中,我们只需

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

    但这不起作用,在后者我们必须

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

    为什么是这样?

注意:我对 ReactJS 有一些 exp,对 React Native 有零,如果很明显,我猜 ReactVR 倾向于后一种赦免

4

1 回答 1

0

发生这种情况是因为 react 中的事件对象被重用并在超出函数范围后立即被刷新,因此您必须将其存储为变量以供进一步使用。

于 2017-09-26T11:25:41.920 回答