diff --git a/common/changes/@visactor/vtable/fix-resize-col-line-stuck-4120_2026-03-24-00-40.json b/common/changes/@visactor/vtable/fix-resize-col-line-stuck-4120_2026-03-24-00-40.json new file mode 100644 index 000000000..fc4b28406 --- /dev/null +++ b/common/changes/@visactor/vtable/fix-resize-col-line-stuck-4120_2026-03-24-00-40.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: clear resize column/row indicator line when setRecords or updateOption is called during resizing #4120", + "type": "patch", + "packageName": "@visactor/vtable" + } + ], + "packageName": "@visactor/vtable", + "email": "2779428708@qq.com" +} \ No newline at end of file diff --git a/packages/vtable/src/ListTable.ts b/packages/vtable/src/ListTable.ts index 207f62543..af211d90e 100644 --- a/packages/vtable/src/ListTable.ts +++ b/packages/vtable/src/ListTable.ts @@ -1547,6 +1547,15 @@ export class ListTable extends BaseTable implements ListTableAPI { */ setRecords(records: Array, option?: { sortState?: SortState | SortState[] | null }): void { clearChartRenderQueue(); + // 如果正在进行列宽/行高调整,先清理指示线,避免残留 + if (this.stateManager.isResizeCol()) { + this.scenegraph.component.hideResizeCol(); + this.stateManager.columnResize.resizing = false; + } + if (this.stateManager.isResizeRow()) { + this.scenegraph.component.hideResizeRow(); + this.stateManager.rowResize.resizing = false; + } // 释放事件 及 对象 this.internalProps.dataSource?.release(); // 过滤掉dataSource的引用 diff --git a/packages/vtable/src/PivotChart.ts b/packages/vtable/src/PivotChart.ts index a00957875..ce5bcfbcb 100644 --- a/packages/vtable/src/PivotChart.ts +++ b/packages/vtable/src/PivotChart.ts @@ -1623,6 +1623,15 @@ export class PivotChart extends BaseTable implements PivotChartAPI { * @param sort */ setRecords(records: Array): void { + // 如果正在进行列宽/行高调整,先清理指示线,避免残留 + if (this.stateManager.isResizeCol()) { + this.scenegraph.component.hideResizeCol(); + this.stateManager.columnResize.resizing = false; + } + if (this.stateManager.isResizeRow()) { + this.scenegraph.component.hideResizeRow(); + this.stateManager.rowResize.resizing = false; + } this.internalProps.layoutMap.release(); clearChartRenderQueue(); this.scenegraph.updateChartState(null, undefined); diff --git a/packages/vtable/src/PivotTable.ts b/packages/vtable/src/PivotTable.ts index abb99f53c..243217d7c 100644 --- a/packages/vtable/src/PivotTable.ts +++ b/packages/vtable/src/PivotTable.ts @@ -1666,6 +1666,15 @@ export class PivotTable extends BaseTable implements PivotTableAPI { */ setRecords(records: Array): void { clearChartRenderQueue(); + // 如果正在进行列宽/行高调整,先清理指示线,避免残留 + if (this.stateManager.isResizeCol()) { + this.scenegraph.component.hideResizeCol(); + this.stateManager.columnResize.resizing = false; + } + if (this.stateManager.isResizeRow()) { + this.scenegraph.component.hideResizeRow(); + this.stateManager.rowResize.resizing = false; + } const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row }; this.options.records = this.internalProps.records = records; this.internalProps.recordsIsTwoDimensionalArray = false; diff --git a/packages/vtable/src/state/state.ts b/packages/vtable/src/state/state.ts index 51ae5ba3c..fde5b4aa0 100644 --- a/packages/vtable/src/state/state.ts +++ b/packages/vtable/src/state/state.ts @@ -251,6 +251,14 @@ export class StateManager { this.setFrozenState(); } _updateOptionSetState() { + // 如果正在进行列宽/行高调整,先隐藏指示线,避免状态重置后指示线残留 + if (this.columnResize.resizing) { + this.table.scenegraph.component.hideResizeCol(); + } + if (this.rowResize.resizing) { + this.table.scenegraph.component.hideResizeRow(); + } + this.interactionState = InteractionState.default; // this.select = { // highlightScope: HighlightScope.single,