@@ -106,11 +106,11 @@ export type VirtualStore = {
106106 $isUnmeasuredItem ( index : number ) : boolean ;
107107 $getItemOffset ( index : number ) : number ;
108108 $getItemSize ( index : number ) : number ;
109- $getItemsLength ( ) : number ;
109+ _getItemsLength ( ) : number ;
110110 $getScrollOffset ( ) : number ;
111111 $isScrolling ( ) : boolean ;
112112 $getViewportSize ( ) : number ;
113- $getStartSpacerSize ( ) : number ;
113+ _getStartSpacerSize ( ) : number ;
114114 $getTotalSize ( ) : number ;
115115 $getJumpCount ( ) : number ;
116116 _flushJump ( ) : [ number , boolean ] ;
@@ -219,11 +219,11 @@ export const createVirtualStore = (
219219 } ,
220220 $getItemOffset : getItemOffset ,
221221 $getItemSize : getItemSize ,
222- $getItemsLength : ( ) => cache . _length ,
222+ _getItemsLength : ( ) => cache . _length ,
223223 $getScrollOffset : ( ) => scrollOffset ,
224224 $isScrolling : ( ) => _scrollDirection !== SCROLL_IDLE ,
225225 $getViewportSize : ( ) => viewportSize ,
226- $getStartSpacerSize : ( ) => startSpacerSize ,
226+ _getStartSpacerSize : ( ) => startSpacerSize ,
227227 $getTotalSize : getTotalSize ,
228228 $getJumpCount : ( ) => jumpCount ,
229229 _flushJump : ( ) => {
@@ -397,15 +397,18 @@ export const createVirtualStore = (
397397 break ;
398398 }
399399 case ACTION_ITEMS_LENGTH_CHANGE : {
400- if ( payload [ 1 ] ) {
401- applyJump ( updateCacheLength ( cache , payload [ 0 ] , true ) ) ;
402- _scrollMode = SCROLL_BY_SHIFT ;
403- mutated = UPDATE_VIRTUAL_STATE ;
404- } else {
405- updateCacheLength ( cache , payload [ 0 ] ) ;
406- // https://github.com/inokawa/virtua/issues/552
407- // https://github.com/inokawa/virtua/issues/557
408- mutated = UPDATE_VIRTUAL_STATE ;
400+ const [ length , isShift ] = payload ;
401+ if ( cache . _length !== length ) {
402+ if ( isShift ) {
403+ applyJump ( updateCacheLength ( cache , length , true ) ) ;
404+ _scrollMode = SCROLL_BY_SHIFT ;
405+ mutated = UPDATE_VIRTUAL_STATE ;
406+ } else {
407+ updateCacheLength ( cache , length ) ;
408+ // https://github.com/inokawa/virtua/issues/552
409+ // https://github.com/inokawa/virtua/issues/557
410+ mutated = UPDATE_VIRTUAL_STATE ;
411+ }
409412 }
410413 break ;
411414 }
0 commit comments