Реагировать на синтетическое событие странным поведением - PullRequest
0 голосов
/ 06 декабря 2018

Я искал другие ответы, этот подходит ближе всего к тому, с чем я имею дело.

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

. Для некоторого контекста я использую обработчик onClick , который поставляется в комплекте с библиотекой Reaction-D3-Tree

Я думал, что это просто эта библиотекавызывает проблемы.Но в обработчике кликов я могу распечатать событие на консоли и вижу, что параметр shiftKey установлен так, как ожидалось.Но каждый раз, когда я пытаюсь получить доступ к event.shiftKey, я получаю сообщение об ошибке:

index.js: 1452 Предупреждение. Это синтетическое событие используется повторно из соображений производительности.Если вы видите это, вы получаете доступ к свойству `shiftKey` в освобожденном / аннулированном синтетическом событии.Это установлено в ноль.Если вам нужно сохранить оригинальное синтетическое событие, используйте event.persist ().

См. Мой пример кода.

Обновление: репо для репликации вопроса https://github.com/mwilde345/reactBrokenClick

1 Ответ

0 голосов
/ 06 декабря 2018

На способ отображения объектов в консоли не следует полагаться.Объекты передаются по ссылке в JavaScript.Если внутренние компоненты объекта обновляются в какой-то момент, они будут обновлены в консоли.

persist() создает копию объекта события, поэтому он должен отображаться в консоли как моментальный снимок в момент его вызова.То, что проблема возникает с persist(), означает, что с ней что-то не так.

Проблема вызвана сторонним компонентом, Tree из react-d3-tree.Объект события используется асинхронно, persist() в коде пользователя не будет иметь желаемых результатов, вместо этого persist() должен синхронно вызываться в Tree компоненте.

...