Mimic class properties with useEventCallback #1566
Merged
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.
In v1, all helper methods we class properties. This meant that they were bound to the instance of the class. However, with hooks, there is no concept of
this
and each helper method is wrapped inuseCallback
. However, certain behaviors (e.g. auto-saving) are not possible because of circularuseCallback
dependencies. For example,submitForm
depends onvalues
, so if you changevalues
, thensubmitForm
will be different. This prevents you from debouncingsubmitForm
in response tovalues
because you get a brand new function on each change. Sadness.The suggested solution in the React docs is to use this hook:
This PR adds this hook internally and utilizes it where necessary (on any callback that relies on
state
). It also adds a newDebouncedAutoSave
example to the examples directory.