What you need to know
A controlled input reads its value from React state, making conditional UI and live validation straightforward. An uncontrolled input keeps its value in the DOM and can be simpler for a basic form.
How to apply it
Use controlled fields when the interface needs the latest value while typing. For simpler submission-only forms, read values with FormData or refs and keep labels, validation, and errors explicit.
Common mistake to avoid
Do not mix controlled and uncontrolled behavior accidentally by switching between undefined and a string value. Provide a stable initial value.
