Если вы хотите отключить кнопку, когда строка ввода пуста, тогда единственное состояние, которое вам нужно, - это значение строки ввода.
const [inputVal, setInputVal] = useState('')
// ...
<input value={inputVal} onChange={e => setInputVal(e.target.value)} />
// ...
<button disabled={!inputVal}> /* ... */ </button>
Здесь мы подключаем компонент ввода к значению состояния . Это называется управляемый компонент, потому что его значение контролируется внешним источником (значением состояния), в отличие от неконтролируемого компонента, что означает, что входной элемент содержит собственный внутренний state (входы по умолчанию работают, если вы не устанавливаете их value
prop напрямую.
Когда входной компонент получает входные данные (например, кто-то вводит символ), вызывается onChange
prop. Тогда do - это взять новое значение элемента ввода (e.target.value
) и использовать его для установки состояния.
Если вы можете получить состояние из другого состояния, вы не должны сохранять его в состоянии. Наличие переменной состояния с именем disabled
только усложняет задачу. Общая идея состоит в том, чтобы использовать как можно меньше состояния и вычислять как можно больше из этого состояния.