Use ref for exiting children (Fixes #1914) #2113
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1914
The
onExit
callback for exiting children could have stale values for the set ofexiting
keys. This would lead to the last "exiting" element to not realize they were the last exiting element, and therefore not trigger a force render (specific code below)This means already-exited elements would still be visible until the next render (if there was one)
I looked into adding a test for this case. However, in tests, the use of
React.StrictMode
created a lot of extra renders which would "fix" this broken state before I could assert against it. Even experimenting with not using React.StrictMode, I still saw more than 1 render when callingrerender
and could not get a clean failing test. Let me know if you have any suggestions!