пользовательская прозрачность всплывающей подсказки всегда 1 - PullRequest
0 голосов

У меня есть настраиваемая всплывающая подсказка в response-chartjs-2;Я нашел решение сделать пользовательскую подсказку, но моя подсказка всегда видна, в этом решении подсказка скрывается, когда tooltip.opacity равен 0, но в моем случае непрозрачность подсказки всегда равна 1, может ли smbd помочь мне, пожалуйста?

        tooltips: {
            enabled: false,
            mode: 'x',
            intersect: false,
            custom: (tooltipModel) => {
                if (tooltipModel.opacity === 0) {
                    // never called because opacity is always 1
                    this.hide();
                    return;
                }
                // const position = this.chartRef.current.chartInstance.canvas.getBoundingClientRect();

                // set position of tooltip
                // const left = position.left + tooltipModel.caretX;
                // const top = position.top + tooltipModel.caretY;

                // set values for display of data in the tooltip
                const date = tooltipModel.dataPoints[0].xLabel;
                const value = tooltipModel.dataPoints[0].yLabel;

                // this.setPositionAndData(top, left, date, value);
            },

1 Ответ

0 голосов
/ 16 октября 2018

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

Когда вы создаете свой дескриптор для пользовательской панели инструментов, вы должны обратить внимание, чтобы не перезаписывать объект this (scope).Попробуйте использовать функцию со стрелкой и удалите привязку, fn автоматически получит новую область, и непрозрачность будет обновлена, когда вы выйдете из графика / линии и т. Д.

Та же проблема произойдет с легендой, еслиВы пытаетесь перезаписать функцию onClick, используя встроенную функцию стрелки или функции.Ниже приведены некоторые примеры.

_tooltip = (tooltipModel) => {
...
}
_legendOnClick = (ev) => {
    ev.preventDefault()
}
render() {
    const defaultOpt = {
      legend: {
        onClick: this._legendOnClick
      },
      tooltips: {
        enabled: false,
        custom: this._tooltip,
        mode: 'index'
      }
    }
}

Если вы хотите улучшить производительность, вы должны удалить defaultOpt из метода рендеринга.

Это

...