哪个是合适的生命周期钩子来画一条线?

Which is the appropriate lifecycle hook to draw a line?

我想画一条线来显示 y 轴上的零值。我有这个工作:

afterDraw(chart) {
      const {ctx, scales} = chart;

      Object.keys(scales).forEach((key) => {
        const scale = scales[key];
        if (scale.axis !== 'y') {
          return;
        }
        const yCoordinate = scale.getPixelForValue(ZERO_COORDINATE);
        ctx.fillStyle = 'blue';
        ctx.fillRect(0, yCoordinate, 200, 5);
      });
    },

我最初尝试使用 afterBuildTicks,但那并没有划清界线 - 或者至少它是不可见的。是否有关于何时使用不同生命周期挂钩的指南?有些看起来很明显,有些则不那么明显。

如果我在任何生命周期挂钩中使用图表的上下文,我如何确保我绘制的内容位于图表之上?我看到一个示例,其中有人通过提供 beforeDraw 回调来更改背景 - 堆叠上下文是否按我们通过不同挂钩绘制的顺序管理?

chart.js documentation 中有一个图表显示了在渲染过程中何时调用每个挂钩以及 chart.js 在这些挂钩之间执行的操作,例如绘制数据集、网格等.

如果您想确保您正在绘制的内容位于其他所有内容之上,您需要使用 afterDraw 挂钩在您想要的 canvas 上绘制内容。