Всё сводится к тому, кто является источником истины для значения инпута — состояние React или сам DOM.
Контролируемые (React владеет значением)
Значение инпута управляется состоянием, а onChange держит состояние в синхронизации. DOM всегда отражает React:
jsx
[name, setName] = ();
