You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Now we put either one on the unmount queue and switch to mount-mode for the other. Which essentially means that we dive into mount which immediately applies the ref as part of mountChildren and when we trampoline back up into patchChildren we will meet the unmount call and erase the ref to null.
The issue with queueing is determining the timeframe to apply the refs as they will need to be there before our layout-effects are triggering so we need it before we connect the new nodes to our root-tree.
This makes a queue a hard task as we try to be as indeterminate as possible about what phase we are in.
On the bright side we could start experimenting with tracking the refs on the rendererState still a bit hesitant on when to start applying them.
The thing that worries me about the patch —> mount cycle is that we would probably even here have issues queuing and keeping a deterministic order. i.e. we could keep two arrays with nullish and non-nullish invocations, this would result in us executing them out of order —> all null —> all value rather than null - value - null - value (useImperativeHandle). I think we would just need to find a special case for this replacement logic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Issues with refs
I kinda get the issues with refs now, it basically ties into how we can switch from a
patchoriented diff to amountone.In essence we always discard refs as part of our unmount process which makes sense in essence but this could prove to be hard when we do
Now we put either one on the unmount queue and switch to mount-mode for the other. Which essentially means that we dive into
mountwhich immediately applies the ref as part ofmountChildrenand when we trampoline back up intopatchChildrenwe will meet theunmountcall and erase the ref tonull.The issue with queueing is determining the timeframe to apply the refs as they will need to be there before our layout-effects are triggering so we need it before we connect the new nodes to our root-tree.
This makes a queue a hard task as we try to be as indeterminate as possible about what phase we are in.
On the bright side we could start experimenting with tracking the refs on the
rendererStatestill a bit hesitant on when to start applying them.The thing that worries me about the patch —> mount cycle is that we would probably even here have issues queuing and keeping a deterministic order. i.e. we could keep two arrays with nullish and non-nullish invocations, this would result in us executing them out of order —> all null —> all value rather than null - value - null - value (useImperativeHandle). I think we would just need to find a special case for this replacement logic.