It comes down to who is the source of truth for the input's value — React state, or the DOM itself.
Controlled (React owns the value)
The input's value is driven by state, and onChange keeps state in sync. The DOM always reflects React:
jsx
[name, setName] = ();
