@@ -47,21 +47,23 @@ export function useVirtual({
4747 mountedRef . current = true
4848 } , [ estimateSize , size ] )
4949
50- const measurements = React . useMemo ( ( ) => {
50+ const { measurements, reversedMeasurements } = React . useMemo ( ( ) => {
5151 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 -- ) {
5355 const start = measurements [ i - 1 ] ?. end || 0
5456 const size = measuredCache [ i ] || estimateSize ( i )
5557 const end = start + size
58+ const bounds = { index : i , start, size, end }
5659 measurements [ i ] = {
57- index : i ,
58- start ,
59- size ,
60- end ,
60+ ... bounds ,
61+ }
62+ reversedMeasurements [ j ] = {
63+ ... bounds ,
6164 }
6265 }
63-
64- return measurements
66+ return { measurements, reversedMeasurements }
6567 } , [ estimateSize , measuredCache , size ] )
6668
6769 const totalSize = measurements [ size - 1 ] ?. end || 0
@@ -72,9 +74,9 @@ export function useVirtual({
7274 )
7375 let end = React . useMemo (
7476 ( ) =>
75- [ ... measurements ]
76- . reverse ( )
77- . find ( rowStat => rowStat . start <= scrollOffsetPlusOuterSize ) ,
77+ reversedMeasurements . find (
78+ rowStat => rowStat . start <= scrollOffsetPlusOuterSize
79+ ) ,
7880 [ measurements , scrollOffsetPlusOuterSize ]
7981 )
8082
0 commit comments