javascript - ReactVR 中的事件处理

标签 javascript virtual-reality webvr react-360

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

Events coming into onInput can be further filtered by inspecting the type field, which will be one of 'MouseInputEvent', 'KeyboardInputEvent', 'TouchInputEvent', or '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. 我们如何找出事件的目标,例如,如果我要绑定(bind) onInput 事件到 Plane ,当前正在检查 event.nativeEventtarget 作为数值?不是 很有帮助。
  3. 最后,ReactJS 调用事件的方式似乎在 react VR。例如,在前者中我们只是

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

    但这行不通,在后者我们必须

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

    这是为什么?

注意:我对 ReactJS 有一些经验,对 React Native 有一些经验,我猜 ReactVR 倾向于后者,如果很明显的话请原谅

最佳答案

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

关于javascript - ReactVR 中的事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46420432/

相关文章:

javascript - 我如何使用 Hammer.js 和 JQuery 平滑地移动元素?

swift - 如何将 SCNText 放置在 SCNPlane 中?

swift - SceneKit 如何在不同高度的地形上移动角色

html - 防止相机移动 'through' aframe对象

javascript - 为什么 aframe 中的视频无法在移动设备上播放

javascript - 用于测试日期格式的正则表达式

javascript - 如何在 NodeJS 的父函数范围内返回 SQL 结果?

android - 如何捕获 Gear VR 的屏幕并在笔记本电脑或投影仪上显示

youtube - 是否可以使用ReactVR链接到360 YouTube视频?

javascript - 自定义过渡彩色菜单