Commit 532cc60
committed
Sync ItemSeparator props on cell re-render in SectionList
ItemWithSeparator stored leadingItem, trailingItem, and section info in
useState seeded only by the first render's props. When the same cell
key re-rendered with different data (e.g. after a section reorder), the
state was never updated, so ItemSeparatorComponent kept receiving the
original items — including undefined when the previous row was at a
section boundary.
Re-derive the base separator props from current props at render time
and update state when they drift, using the standard React pattern for
prop-derived state. The setSelfUpdatePropsCallback API used for
cross-cell highlight propagation is preserved.
Adds a regression test that reorders a SectionList and asserts the
trailing separator below each item reflects the new neighbours.
Fixes #557081 parent 11d894d commit 532cc60
2 files changed
Lines changed: 100 additions & 8 deletions
File tree
- packages/virtualized-lists/Lists
- __tests__
Lines changed: 33 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
532 | 532 | | |
533 | 533 | | |
534 | 534 | | |
535 | | - | |
536 | | - | |
537 | | - | |
| 535 | + | |
538 | 536 | | |
539 | 537 | | |
540 | 538 | | |
541 | 539 | | |
542 | 540 | | |
543 | | - | |
544 | | - | |
545 | | - | |
546 | | - | |
| 541 | + | |
| 542 | + | |
547 | 543 | | |
548 | 544 | | |
549 | 545 | | |
550 | 546 | | |
551 | 547 | | |
552 | | - | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
553 | 578 | | |
554 | 579 | | |
555 | 580 | | |
| |||
Lines changed: 67 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
205 | 272 | | |
206 | 273 | | |
207 | 274 | | |
| |||
0 commit comments