将上下文传递给 React ChartJS 2 上的选项

Gon*_*488 5 javascript reactjs chart.js

我正在使用 React ChartJS 2 创建一些图表,但我想在它们顶部显示一个带有百分比的标签,当我将鼠标悬停在它们上方时显示实际数字。我发现您可以使用选项对象上的上下文执行类似的操作。

var options = {
   tooltips: {
     enabled: false
   },
   plugins: {
     datalabels: {
       formatter: (value, ctx) => {

         let datasets = ctx.chart.data.datasets;

         if (datasets.indexOf(ctx.dataset) === datasets.length - 1) {
           let sum = datasets[0].data.reduce((a, b) => a + b, 0);
           let percentage = Math.round((value / sum) * 100) + '%';
           return percentage;
         } else {
           return percentage;
         }
       },
       color: '#fff',
     }
   }
 };

var ctx = document.getElementById("pie-chart").getContext('2d');
 var myChart = new Chart(ctx, {
   type: 'pie',
   data: {
     datasets: data
   },
   options: options
 });
Run Code Online (Sandbox Code Playgroud)

像这样,但我的问题是我无法找到使用选项内上下文的方法。

有人知道该怎么做吗?

Ana*_*dac 5

您不必手动将其传递context给数据标签的formatter函数,因为插件本身会处理这个问题。

这是带有上面指定的选项的饼图的工作示例。

context但是,如果您想在其他一些要传递给 的函数中访问图表options,那么您可以使用 来通过图表实例获取它this.chart.ctx

var options = {
  animation: {
    onComplete: function () {
      var chartInstance = this.chart;
      var ctx = chartInstance.ctx; // chart context
    }
  }
};
Run Code Online (Sandbox Code Playgroud)