Deferred Mount feature: DeferredMountWithCallback #34
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.
Overview
The
DeferredMount
component will wait for an initial render before marking the render as complete. This works for simple components, but falls apart for components that load content asynchronously.This PR introduces a new component and hook to handle those cases:
DeferredMountWithCallback
anduseNotifyMountComplete
.Implementation
Originally, the
DeferredMountProvider
would loop through a queue of any deferred children and call a trigger function that causes them to render; trying to render as many as possible within a given time budget.As an addition to this, it will now check to see if that trigger function returns a callback which is then used to pause the processing of the queue until the callback is run.
Example