Comments (5)
I wonder if the whole thing should not be using useSyncExternalStore?
from react-final-form.
The SetFieldValueIfEmpty violates React functional component principles and possibly the rules of hooks.
For this kind of behaviour see subscribe.
from react-final-form.
Hi @gertdreyer. Thank you. I will checkout the subscribe API.
Can you please elaborate the violation of react functional components/hooks principles in the above example?
from react-final-form.
A functional component have to return a React Element . Similarly, a class-style component has to have a render method.
On the useEffect
. Try playing with console.count(fieldname)
in the useEffect to see the inefficiency. useEffect is actioned after the every render - you know before rendering that your field needs a default value. You also open yourself up to infinite render loops using setState in a useEffect if your condition is not well defined.
from react-final-form.
- It was a typo to not add a
return null
but that won't change the strict behaviour. You will still see the results shown in the screenshot. - It should be safe to call
setState
orfield.change
insideuseEffect
with my conditions. The only (variable) dependency to the Effects the value.
Just wanted to clarify again that the issue is between the above functionality during React's Strict and Non-Strict Modes. In StrictMode, useEffect is executed twice during the first render causing the listeners to execute twice where as in non-StrictMode, listeners fail to correctly set-up.
from react-final-form.
Related Issues (20)
- Feature request: new render prop `handleSubmitSync`
- Error messages on nested object values HOT 1
- Form Reset When Modal Close HOT 1
- Q: should readonly fields be validated on blur?
- Error in codesandbox example HOT 2
- Documentation for defaultValue of FieldProps is not matching implementation
- Warning message in console when using the field validation for a string field. HOT 3
- Ran into "is dirty" validation issues when state was used to autofill a form's input field. HOT 1
- [Feature Request] Add new prop to specify changes to specific form fields HOT 1
- change is not a function HOT 1
- Rewrite To Typescript HOT 2
- rerenderOnEveryChange for react-final-form
- <FormSpy> components rendering earlier than in previous versions
- DestroyOnUnregister incompatible with StrictMode in React18 HOT 2
- isEqual is initialized by the first field registered instance
- useField does not rerender component, when its props change
- Submitting Images in React Final Form
- I believe defaultValue should be the DEFAULT. That means, if NO initialValue was passed in, the defaultValue would be used. If there is an initialValue, it should override the defaultValue. One work around is using an OR in initialValues and skip using defaultValue all together like so:
- Form not dirty after removing items from FieldArray using final-form-arrays
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-final-form.