Skip to content

Commit

Permalink
Bail on hiPri render on missing layout data before checking priority (#…
Browse files Browse the repository at this point in the history
…41270)

Summary:
Pull Request resolved: #41270

`scheduleCellsToRenderUpdate()` is called in response to new measurements, or component changes. It has logic to decide whether to immediately calculate new state, or to defer it until a later batched period.

It will not immediately update state if we don't yet have measurements for cells, but this condition is after another which calculates priority, relying on these measurements. These are garbage if we don't yet have measurements, and trigger an invariant violation in horizontal RTL.

This switches around the conditions, to avoid offset resolution if we don't yet have valid measurements.

I suspect some "hiPri" renders where cells shift are bugged right now when we update state in response to content size change, before we have new corresponding cell layouts.

Changelog:
[General][Fixed] - Bail on hiPri render on missing layout data before checking priority

Reviewed By: yungsters

Differential Revision: D50791506

fbshipit-source-id: 8dbffc37edd2a42f7842c0090d344dcd6f3e3c6d
  • Loading branch information
NickGerleman authored and Luna Wei committed Nov 2, 2023
1 parent 832b423 commit 29f8f1e
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/virtualized-lists/Lists/VirtualizedList.js
Original file line number Diff line number Diff line change
Expand Up @@ -1748,8 +1748,9 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
// If this is triggered in an `componentDidUpdate` followed by a hiPri cellToRenderUpdate
// We shouldn't do another hipri cellToRenderUpdate
if (
(this._listMetrics.getAverageCellLength() > 0 ||
this.props.getItemLayout != null) &&
this._shouldRenderWithPriority() &&
(this._listMetrics.getAverageCellLength() || this.props.getItemLayout) &&
!this._hiPriInProgress
) {
this._hiPriInProgress = true;
Expand Down

0 comments on commit 29f8f1e

Please sign in to comment.