d3.event не работает при объединении модулей - PullRequest
0 голосов
/ 18 мая 2018

У меня есть код, куда я импортирую (оператор es6 import) d3-selection и d3-transition.Однако мне также нужно захватить событие.Когда я не импортирую d3-переход, d3.events работает отлично.Как только я импортирую d3-transition, я получаю сообщение о том, что d3.event равно null и не может ссылаться на свойства события.

В справочнике по API D3 есть примечание.

https://github.com/d3/d3-selection/blob/master/README.md#event: Если вы используете Babel, Webpack или другой упаковщик ES6-ES5, помните, что значение d3.event изменяется во время события!Импорт d3.event должен быть оперативным связыванием, поэтому вам может потребоваться настроить пакет для импорта из модулей ES6 D3, а не из сгенерированного пакета UMD;не все упаковщики соблюдают jsnext: main.Также остерегайтесь конфликтов с глобальным window.event.

Я использую babel (для поддержки ie11) и webpack для комплектации.Что означает эта заметка?Почему не работает что-то вроде import {event as d3event} from'd3-selection';, за которым следует let d3 = Object.assign({}, d3selection, d3transition, d3event};?

1 Ответ

0 голосов
/ 19 марта 2019
import {event as d3event} from'd3-selection'
d3event === null // true; `event`'s value changes later with user input.
let d3 = Object.assign({}, d3selection, d3transition, d3event)
// won't have an `event` property since Object.assign({}, null) -> {}

Добавление d3.event = event // or d3 = {event} все равно вернет нулевое событие, наблюдаемое во время назначения;см. метод получения Майком Бостоком текущего события для решения.

Примечание d3.event теперь содержит ссылку на объяснениеЧто такое живое связывание: ссылка на переменную в d3-selection.

Дополнительное предостережение, которое стоило мне времени: если d3-drag указывает на версию d3-select, отличную от других ваших инструментов,d3.select(/**/).call(d3.drag(/**/)) не будет работать, так как события никогда не достигают переменной event, которую использует d3.drag.Где-то около d3@^5 основной пакет больше не поддерживает версию d3-selection, что допускает такое несоответствие.

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