[@mantine/hooks] use-throttled-*: Emit updates on trailing edges #6257
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.
Make sure the throttled value/state/callback always has the last value it was called with after the timeout has expired.
I refactored the hooks to all depend on a single hook (
useThrottledCallbackWithClearTimeout
) that contains the throttling logic. This hook is not exported.Mantine doesn't use the
react-hooks/exhaustive-deps
lint. So there is no warning for the missingwait
in the old use-throttled-value implementation. This is why I introduced thewaitRef
. I later saw that use-throttled-state and use-throttled-callback did include thewait
dependency. So maybe it was just a mistake. But anyway I kept thewaitRef
for now.I also adjusted the tests to reflect the new behavior and unified the "should clear timeout on unmount" tests.
Fixes: #6220