Получайте данные о кликах с помощью React-Vega и Vega-Lite

У меня есть диаграмма vega-lite, и я хотел бы добавить прослушиватель событий для получения данных в React, но, похоже, не могу этого понять. В частности, я пытаюсь отобразить таблицу под вегетарианской диаграммой, которая зависит от некоторых атрибутов выбранной метки.

Вот начало спецификации:

const spec = {
    width: 'container',
    height: 500,
    signals: [
        {
            name: 'click',
            value: 0,
            on: [{events: '*:mousedown', update: 'datum'}]
        }
    ],
    layer: [
        {
            mark: {type: 'point', filled: true, tooltip: {content: 'data'}},
....

И вот моя последняя попытка получить точку щелчка (на основе https://github.com/vega/react-vega/tree/master/packages/react-vega#approach1-create-class-from-spec-then-get-a-response-class-to-use):

const handleClick = (...args) => {
    console.log(args);
}
const signalListeners = { click: handleClick };
const vegaChart = <VegaLite spec={spec} data={data} signalListeners={signalListeners}/>;

Однако я получаю Cannot add invalid signal listener. Error: Unrecognized signal name: "click", хотя сигнал щелчка определен. Любая помощь будет оценена по достоинству; Кажется, я не могу найти ничего подобного в Интернете.


person qwert    schedule 13.03.2020    source источник


Ответы (2)


Переключитесь на Vega, скомпилировав мою спецификацию Vega-lite в спецификацию Vega, а затем добавив блок signals.

person qwert    schedule 14.03.2020

Похоже, vega-lite не поддерживает сигналы, поэтому обходной путь - добавить сигнал в скомпилированную спецификацию.

Этот вопрос представляет собой хороший пример: Как правильно реализовать собственный обработчик кликов в Vega-lite

person btk    schedule 31.08.2020