@@ -6,6 +6,8 @@ import ViewLayer from '../base/view-layer';
66import { IScrollbarInteractionConfig } from '../interface/config' ;
77import BaseInteraction from './base' ;
88import { getDataByScaleRange } from './helper/data-range' ;
9+ import { VIEW_LIFE_CIRCLE } from '@antv/g2/lib/constant' ;
10+ import { VIEW_LAYER_LIFE_CYCLE } from '../base/constants' ;
911
1012const DEFAULT_PADDING : number = 4 ;
1113const DEFAULT_SIZE : number = 8 ;
@@ -79,10 +81,11 @@ export default class ScrollbarInteraction extends BaseInteraction {
7981 } ) as ( evt : object ) => void ;
8082
8183 public render ( ) : void {
84+ const layer = this . getViewLayer ( ) ;
8285 const view = this . view ;
8386 this . ratio = 0 ;
8487 this . thumbOffset = 0 ;
85- view . on ( 'afterrender' , ( ) => {
88+ const callback = ( ) => {
8689 const padding = this . view . padding ;
8790 // if we're not in `auto padding` process
8891 if ( padding === 'auto' || isEqual ( padding , [ 0 , 0 , 0 , 1 ] ) ) {
@@ -94,7 +97,17 @@ export default class ScrollbarInteraction extends BaseInteraction {
9497 } else {
9598 this . renderScrollbar ( ) ;
9699 }
97- } ) ;
100+ } ;
101+ const changeDataCallback = ( ) => {
102+ // reset
103+ this . trackLen = 0 ;
104+ } ;
105+ view . on ( VIEW_LIFE_CIRCLE . AFTER_PAINT , callback ) ;
106+ this . addDisposable ( ( ) => view . off ( VIEW_LIFE_CIRCLE . AFTER_PAINT , callback ) ) ;
107+ view . on ( VIEW_LIFE_CIRCLE . AFTER_RENDER , callback ) ;
108+ this . addDisposable ( ( ) => view . off ( VIEW_LIFE_CIRCLE . AFTER_RENDER , callback ) ) ;
109+ layer . on ( VIEW_LAYER_LIFE_CYCLE . BEFORE_CHANGE_DATA , changeDataCallback ) ;
110+ this . addDisposable ( ( ) => layer . off ( VIEW_LAYER_LIFE_CYCLE . BEFORE_CHANGE_DATA , changeDataCallback ) ) ;
98111 }
99112
100113 protected start ( ) {
0 commit comments