Обработка событий в ReactVR
Я экспериментировал с ReactVR, и у меня мало сомнений в обработке событий. Согласно документации в Cusors и 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);
}
Это ожидаемое поведение или я что-то упустил.
Несколько связанных вопросов
- Должны ли мы прослушивать события с помощью event.nativeEvent?
- Как мы узнаем цель мероприятия, например, если я хочу связать
onInput
событие вPlane
, в настоящее время осматриваюevent.nativeEvent
даетtarget
как числовое значение? Совсем не полезно. Наконец, способ вызова событий в ReactJS, похоже, не работает в ReactVR. Например, в первом мы бы просто
<Plane onInput={this._onInput} lit={true} />
Но это не работает, в последнем случае мы должны
<Plane onInput={(event) => this._onInput(event)} lit={true} />
Почему это?
Примечание: у меня есть опыт с ReactJS и ZERO с React Native, я предполагаю, что ReactVR склоняется к последнему извинению, если это очевидно
1 ответ
Это происходит потому, что объект события в реакции используется повторно и сразу же очищается после того, как он выходит из области действия функции, поэтому вы должны сохранить его как переменную для дальнейшего использования.