Skip to content

Commit

Permalink
Don't modify keyPath until right before recursive renderNode call (fa…
Browse files Browse the repository at this point in the history
…cebook#27366)

Currently, if a component suspends, the keyPath has already been
modified to include the identity of the component itself; the path is
set before the component body is called (akin to the begin phase in
Fiber). An accidental consequence is that when the promise resolves and
component is retried, the identity gets appended to the keyPath again,
leading to a duplicate node in the path.

To address this, we should only modify contexts after any code that may
suspend. For maximum safety, this should occur as late as possible:
right before the recursive renderNode call, before the children are
rendered.

I did not add a test yet because there's no feature that currently
observes it, but I do have tests in my other WIP PR for useFormState:
facebook#27321
  • Loading branch information
acdlite authored and AndyPengc12 committed Apr 15, 2024
1 parent c9f6724 commit ea31cf9
Showing 1 changed file with 94 additions and 19 deletions.
Loading

0 comments on commit ea31cf9

Please sign in to comment.