Commit ca132d2
Fire VirtualizedList edge callbacks after programmatic scrolling
Summary:
Programmatic list scrolling can move to an edge before asynchronously scheduled cells finish rendering. The scroll handler then skips the edge callback because the terminal cell is not yet in the render window, and no later scroll or layout event is guaranteed.
Recheck edge callbacks after post-scroll render updates. Track both content length and item count when an edge callback is sent so internal measurement changes cannot emit duplicates while the list remains at the same edge; scrolling away still re-arms the callback.
Changelog:
[General][Fixed] - Fire `VirtualizedList` edge callbacks after programmatic scrolling
Differential Revision: D1008700751 parent 18f5ddb commit ca132d2
4 files changed
Lines changed: 226 additions & 27 deletions
File tree
- packages
- rn-tester/js/examples/FlatList
- virtualized-lists/Lists
- __tests__
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| 63 | + | |
63 | 64 | | |
64 | 65 | | |
65 | 66 | | |
| |||
95 | 96 | | |
96 | 97 | | |
97 | 98 | | |
98 | | - | |
| 99 | + | |
99 | 100 | | |
100 | 101 | | |
101 | 102 | | |
| |||
Lines changed: 111 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
18 | 29 | | |
19 | 30 | | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
25 | 70 | | |
26 | | - | |
27 | 71 | | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
32 | 77 | | |
33 | 78 | | |
34 | 79 | | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
35 | 119 | | |
36 | 120 | | |
37 | | - | |
| 121 | + | |
| 122 | + | |
38 | 123 | | |
39 | 124 | | |
40 | | - | |
41 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
42 | 138 | | |
43 | 139 | | |
44 | 140 | | |
45 | 141 | | |
46 | 142 | | |
47 | 143 | | |
48 | 144 | | |
49 | | - | |
| 145 | + | |
50 | 146 | | |
51 | 147 | | |
52 | 148 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1195 | 1195 | | |
1196 | 1196 | | |
1197 | 1197 | | |
1198 | | - | |
| 1198 | + | |
1199 | 1199 | | |
1200 | 1200 | | |
1201 | 1201 | | |
| |||
1217 | 1217 | | |
1218 | 1218 | | |
1219 | 1219 | | |
1220 | | - | |
1221 | | - | |
1222 | | - | |
1223 | | - | |
1224 | | - | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
1225 | 1228 | | |
1226 | 1229 | | |
1227 | 1230 | | |
| |||
1265 | 1268 | | |
1266 | 1269 | | |
1267 | 1270 | | |
| 1271 | + | |
1268 | 1272 | | |
| 1273 | + | |
1269 | 1274 | | |
1270 | 1275 | | |
1271 | 1276 | | |
| |||
1610 | 1615 | | |
1611 | 1616 | | |
1612 | 1617 | | |
| 1618 | + | |
| 1619 | + | |
1613 | 1620 | | |
1614 | | - | |
| 1621 | + | |
1615 | 1622 | | |
1616 | 1623 | | |
1617 | 1624 | | |
1618 | | - | |
| 1625 | + | |
1619 | 1626 | | |
1620 | | - | |
| 1627 | + | |
| 1628 | + | |
1621 | 1629 | | |
1622 | 1630 | | |
| 1631 | + | |
1623 | 1632 | | |
1624 | 1633 | | |
1625 | 1634 | | |
1626 | 1635 | | |
1627 | | - | |
| 1636 | + | |
1628 | 1637 | | |
1629 | 1638 | | |
1630 | 1639 | | |
1631 | 1640 | | |
1632 | 1641 | | |
1633 | | - | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
1634 | 1645 | | |
1635 | 1646 | | |
| 1647 | + | |
1636 | 1648 | | |
1637 | 1649 | | |
1638 | 1650 | | |
1639 | 1651 | | |
1640 | 1652 | | |
1641 | 1653 | | |
1642 | 1654 | | |
| 1655 | + | |
1643 | 1656 | | |
1644 | 1657 | | |
1645 | 1658 | | |
| 1659 | + | |
1646 | 1660 | | |
1647 | 1661 | | |
1648 | 1662 | | |
| |||
Lines changed: 88 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
799 | 799 | | |
800 | 800 | | |
801 | 801 | | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
802 | 890 | | |
803 | 891 | | |
804 | 892 | | |
| |||
0 commit comments