diff --git a/common/changes/@visactor/vchart/fix-multi-layer-performance_2025-06-25-09-04.json b/common/changes/@visactor/vchart/fix-multi-layer-performance_2025-06-25-09-04.json new file mode 100644 index 0000000000..5904778ef7 --- /dev/null +++ b/common/changes/@visactor/vchart/fix-multi-layer-performance_2025-06-25-09-04.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: only calculate multi layer label items when need, fix #4056\n\n", + "type": "none", + "packageName": "@visactor/vchart" + } + ], + "packageName": "@visactor/vchart", + "email": "dingling112@gmail.com" +} \ No newline at end of file diff --git a/packages/vchart/src/component/axis/mixin/band-axis-mixin.ts b/packages/vchart/src/component/axis/mixin/band-axis-mixin.ts index 803eae5cd1..adcde71b99 100644 --- a/packages/vchart/src/component/axis/mixin/band-axis-mixin.ts +++ b/packages/vchart/src/component/axis/mixin/band-axis-mixin.ts @@ -178,7 +178,8 @@ export class BandAxisMixin { const labelItems: Dict[][] = []; let preData: any[] = []; - this._scales.forEach((scale, index) => { + // 只有需要展示多层标签的时候,才需要计算,否则不需要计算 + (this._spec.showAllGroupLayers ? this._scales : [this._scales[0]]).forEach((scale, index) => { const tickData = this._tickDataMap[index]; // 因为多层级标签会依赖上一层标签的分组值定位,所以如果上一层标签没有内容,那么就直接获取 bandScale 的 domain()