一直在试验 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);
}
这是预期的行为还是我遗漏了什么。
几个相关问题
- 我们是否必须使用 event.nativeEvent 嗅探事件?
- 我们如何找出事件的目标,例如,如果我要绑定(bind)
onInput
事件到Plane
,当前正在检查event.nativeEvent
将target
作为数值?不是 很有帮助。 最后,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/