Зачем вешать на инпут onChange для изменения, если пользователь и так меняет его value ?
Есть более подробный ответ, нежели в документации, где сказано: надо ?
Как состоянию (state) узнать, что значение инпута изменилось? То что пользователь изменил текст в инпуте - видит только пользователь. Даже в нативном JS вы вешаете на инпут обработчик события, что отслеживать изменения значения.