@@ -47,21 +47,23 @@ export function useVirtual({
47
47
mountedRef . current = true
48
48
} , [ estimateSize , size ] )
49
49
50
- const measurements = React . useMemo ( ( ) => {
50
+ const { measurements, reversedMeasurements } = React . useMemo ( ( ) => {
51
51
const measurements = [ ]
52
- for ( let i = 0 ; i < size ; i ++ ) {
52
+ const reversedMeasurements = [ ]
53
+
54
+ for ( let i = 0 , j = size - 1 ; i < size ; i ++ , j -- ) {
53
55
const start = measurements [ i - 1 ] ?. end || 0
54
56
const size = measuredCache [ i ] || estimateSize ( i )
55
57
const end = start + size
58
+ const bounds = { index : i , start, size, end }
56
59
measurements [ i ] = {
57
- index : i ,
58
- start ,
59
- size ,
60
- end ,
60
+ ... bounds ,
61
+ }
62
+ reversedMeasurements [ j ] = {
63
+ ... bounds ,
61
64
}
62
65
}
63
-
64
- return measurements
66
+ return { measurements, reversedMeasurements }
65
67
} , [ estimateSize , measuredCache , size ] )
66
68
67
69
const totalSize = measurements [ size - 1 ] ?. end || 0
@@ -72,9 +74,9 @@ export function useVirtual({
72
74
)
73
75
let end = React . useMemo (
74
76
( ) =>
75
- [ ... measurements ]
76
- . reverse ( )
77
- . find ( rowStat => rowStat . start <= scrollOffsetPlusOuterSize ) ,
77
+ reversedMeasurements . find (
78
+ rowStat => rowStat . start <= scrollOffsetPlusOuterSize
79
+ ) ,
78
80
[ measurements , scrollOffsetPlusOuterSize ]
79
81
)
80
82
0 commit comments