Получение элементов из DOM через querySelector или getElementBy считается плохой практикой и более идиоматичный для React-а способ - использовать useRef для функциональных / createRef для классовых компонентов.
А сам подход без использования useState называется uncontrolled components и он достаточно часто используется, основное отличие в данном случае будет в том, что изменение значения в инпуте таким образом не вызывает нового рендера и если от этого значения зависят другие компоненты/эффекты, то и они обновляться/вызываться тоже не будут.