-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Security Solution][Lists] More composable hooks/utilities #70372
Merged
Conversation
This file contains 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
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.
Pinging @elastic/siem (Team:SIEM) |
FrankHassanabad
approved these changes
Jun 30, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
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
Pinging @elastic/security-solution (Team: SecuritySolution) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
release_note:skip
Skip the PR/issue when compiling release notes
Team: SecuritySolution
Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc.
Team:SIEM
v7.9.0
v8.0.0
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:
useIsMounted
hook that provides a callback to retrieve the mounted state of the componentuseAsync
to prevent state updates on an unmounted componentuseAsync
hook that wraps a function and provides:withOptionalSignal
higher-order function that defaults a function'ssignal
argument tonew AbortController().signal
useAsyncTask
with composition ofuseAsync
andwithOptionalSignal
react-use
library, which should reduce our plugin's bundle size a bit.Checklist
Delete any items that are not applicable to this PR.
For maintainers