[Security Solution][Lists] More composable hooks/utilities#70372
Merged
rylnd merged 5 commits intoelastic:masterfrom Jul 1, 2020
Merged
[Security Solution][Lists] More composable hooks/utilities#70372rylnd merged 5 commits intoelastic:masterfrom
rylnd merged 5 commits intoelastic:masterfrom
Conversation
Components commonly do not care about aborting a request, but are
required to pass `{ signal: new AbortController().signal }` anyway. This
addresses that use case.
This is useful for dealing with asynchronous tasks that may complete after the invoking component has been unmounted. Using this hook, callbacks can determine whether they're currently unmounted, i.e. whether it's safe to set state or not.
This does not suffer from the Typescript issues that the react-use implementation had, and is generally a cleaner hook than useAsyncTask as it makes no assumptions about the underlying function.
Removes the now-unused useAsyncTask as well.
Contributor
|
Pinging @elastic/siem (Team:SIEM) |
rylnd
added a commit
that referenced
this pull request
Jul 1, 2020
…70476) * Add wrapper function to make an AbortSignal arg optional Components commonly do not care about aborting a request, but are required to pass `{ signal: new AbortController().signal }` anyway. This addresses that use case. * Adds hook for retrieving the component's mount status This is useful for dealing with asynchronous tasks that may complete after the invoking component has been unmounted. Using this hook, callbacks can determine whether they're currently unmounted, i.e. whether it's safe to set state or not. * Add our own implemetation of useAsync This does not suffer from the Typescript issues that the react-use implementation had, and is generally a cleaner hook than useAsyncTask as it makes no assumptions about the underlying function. * Update exported Lists API hooks to use useAsync and withOptionalSignal Removes the now-unused useAsyncTask as well. * Add some JSDoc for our new functions
Contributor
|
Pinging @elastic/security-solution (Team: SecuritySolution) |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
This is a followup to #69603 where things are refactored as follows:
useIsMountedhook that provides a callback to retrieve the mounted state of the componentuseAsyncto prevent state updates on an unmounted componentuseAsynchook that wraps a function and provides:withOptionalSignalhigher-order function that defaults a function'ssignalargument tonew AbortController().signaluseAsyncTaskwith composition ofuseAsyncandwithOptionalSignalreact-uselibrary, which should reduce our plugin's bundle size a bit.Checklist
Delete any items that are not applicable to this PR.
For maintainers