logging реагирует на собственное событие, не вызывая console.log и в конечном итоге вылетает приложение - PullRequest
0 голосов
/ 15 ноября 2018

При добавлении события к ScrollView в реагирующем роде я заметил, что обработчик событий не запускается, и приложение через некоторое время неожиданно завершит сбоем.

Вот так выглядел мой обработчик, все что я делал, это просто console.log о событии:

// Does not work:
<FlatList
  ...
  onScrollEndDrag={e => {
    console.log(e);
  }}
  ...
/>

Я заметил, что если я не передал параметр, обработчик событий работал:

// Works:
<FlatList
  ...
  onScrollEndDrag={e => {
    console.log('event');
  }}
  ...
/>

Но я не могу получить доступ к своим данным о событии.

Почему происходит сбой обработчика событий, когда я пытаюсь получить доступ к событию с console.log здесь?

1 Ответ

0 голосов
/ 15 ноября 2018

Я нашел объяснение на github :

Возможно, проблема в том, что у объекта события есть поля, которые являются циклическими или иначе не сериализуемыми.Вместо этого попробуйте зарегистрировать event.nativeEvent (который является объектом ViewLayout).

Это связано с тем, что expo (XDE) реализует console.logging для отправки данных с устройства на компьютер, используя pretty-format для сериализации данных.

Это действительно ошибка в expo начиная с версии 31. Это исправлено в master, но я оставлю этот ответ здесь, если он кому-нибудь поможет.

Решение заключается в использовании e.nativeEvent вместо e в строке console.log, поскольку nativeEvent не имеет циклических ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...