diff --git a/packages/vchart/src/chart/base/base-chart.ts b/packages/vchart/src/chart/base/base-chart.ts index a1faa24670..64f9672f7d 100644 --- a/packages/vchart/src/chart/base/base-chart.ts +++ b/packages/vchart/src/chart/base/base-chart.ts @@ -539,6 +539,11 @@ export class BaseChart extends CompilableBase implements I elements.forEach(element => element.onEvaluateEnd(option)); } + onBeforeRender() { + const elements = [...this._components, ...this._regions, ...this._series]; + elements.forEach(element => element.onBeforeRender()); + } + getLayoutElements(): ILayoutItem[] { return this.getAllModels() .map(i => i.layout) diff --git a/packages/vchart/src/chart/interface/chart.ts b/packages/vchart/src/chart/interface/chart.ts index fe8fd06c29..01d96d08a1 100644 --- a/packages/vchart/src/chart/interface/chart.ts +++ b/packages/vchart/src/chart/interface/chart.ts @@ -100,6 +100,8 @@ export interface IChart extends ICompilable { onEvaluateEnd: (ctx: IChartEvaluateOption) => void; onResize: (width: number, height: number, reRender: boolean) => void; onLayout: () => void; + onBeforeRender: () => void; + /** * 图表更新的时候按需调用 * @since 1.11.0 diff --git a/packages/vchart/src/compile/compiler.ts b/packages/vchart/src/compile/compiler.ts index 85ab9dd2c1..dbc054dccf 100644 --- a/packages/vchart/src/compile/compiler.ts +++ b/packages/vchart/src/compile/compiler.ts @@ -130,7 +130,10 @@ export class Compiler implements ICompiler { dpr, viewBox: this._option.viewBox, canvasControled: this._option.canvasControled, - beforeRender: this._option.beforeRender, + beforeRender: (stage: IStage) => { + this._compileChart?.onBeforeRender(); + this._option.beforeRender?.(stage); + }, afterRender: this._option.afterRender, disableDirtyBounds: true, autoRender: true, diff --git a/packages/vchart/src/component/axis/base-axis.ts b/packages/vchart/src/component/axis/base-axis.ts index b4c9d1c886..2a73f8ee02 100644 --- a/packages/vchart/src/component/axis/base-axis.ts +++ b/packages/vchart/src/component/axis/base-axis.ts @@ -120,6 +120,7 @@ export abstract class AxisComponent extends CompilableBase imp // do nothing } + onBeforeRender() { + // do nothing + } + onDataUpdate() { // do nothing } diff --git a/packages/vchart/src/model/interface.ts b/packages/vchart/src/model/interface.ts index c32dab5333..c779a6d11d 100644 --- a/packages/vchart/src/model/interface.ts +++ b/packages/vchart/src/model/interface.ts @@ -116,6 +116,7 @@ export interface IModel extends ICompilable { onEvaluateEnd: (ctx: IModelEvaluateOption) => void; onDataUpdate: () => void; + onBeforeRender: () => void; updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult; getSpec?: () => any;