Skip to content

Commit a07303c

Browse files
authored
fix: Should keep count (#5)
1 parent 2e4673b commit a07303c

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/Filler.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const Filler: React.FC<FillerProps> = ({ height, offset, children }): React.Reac
2121
};
2222

2323
if (offset !== undefined) {
24-
outerStyle = { height, position: 'relative', overflow: 'visible' };
24+
outerStyle = { height, position: 'relative', overflow: 'hidden' };
2525

2626
innerStyle = {
2727
...innerStyle,

src/List.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ interface ListState<T> {
7878
* Only used when turn virtual list to raw list
7979
*/
8080
cacheScroll?: RelativeScroll;
81+
/**
82+
* Cache `data.length` to use for `disabled` status.
83+
*/
84+
itemCount: number;
8185
}
8286

8387
/**
@@ -138,9 +142,20 @@ class List<T> extends React.Component<ListProps<T>, ListState<T>> {
138142
endIndex: 0,
139143
startItemTop: 0,
140144
isVirtual: requireVirtual(props.height, props.itemHeight, props.data.length),
145+
itemCount: props.data.length,
141146
};
142147
}
143148

149+
static getDerivedStateFromProps(nextProps: ListProps<any>) {
150+
if (!nextProps.disabled) {
151+
return {
152+
itemCount: nextProps.data.length,
153+
};
154+
}
155+
156+
return null;
157+
}
158+
144159
/**
145160
* Phase 1: Initial should sync with default scroll top
146161
*/
@@ -524,7 +539,7 @@ class List<T> extends React.Component<ListProps<T>, ListState<T>> {
524539
};
525540

526541
public render() {
527-
const { isVirtual } = this.state;
542+
const { isVirtual, itemCount } = this.state;
528543
const {
529544
style,
530545
component: Component = 'div',
@@ -559,7 +574,7 @@ class List<T> extends React.Component<ListProps<T>, ListState<T>> {
559574
};
560575

561576
const { status, startIndex, endIndex, startItemTop } = this.state;
562-
const contentHeight = data.length * itemHeight * ITEM_SCALE_RATE;
577+
const contentHeight = itemCount * itemHeight * ITEM_SCALE_RATE;
563578

564579
return (
565580
<Component style={mergedStyle} {...restProps} onScroll={this.onScroll} ref={this.listRef}>

0 commit comments

Comments
 (0)