wsmd/react-use-form-state

[bug] useFormState callback cache causes stale closures

derrickbeining opened this issue · 5 comments

The implementation of useFormState is problematic because it caches callback functions passed to inputs.text et. al. This causes functions like onChange, validate, and onBlur to run with stale closures, namely, the closure with which they are initialised. This can be fixed simply by removing const callbacks = useCache(); from the implementation.

See PR at #76

Can you re-open this? That PR was reverted and this stale closure issue is making react-use-form-state unusable for me. We really need to be able to pass in an array of dependencies ala native hooks.

Any news on this?

wsmd commented

Fix is on the way!

We really need to be able to pass in an array of dependencies ala native hooks.

and that shouldn't be needed! 😄

wsmd commented

The latest release 0.13.1 addresses the stale closures problem. This is no longer be an issue!

Callbacks were originally cached for performance reasons (we don't want to re-render the entire form inputs any time the form state changes). This remains true with the latest release.

Demo (0.13.0): https://xii57.csb.app/
Demo (0.13.1): https://6evzz.csb.app/