У меня есть очень простая форма, в которой я пытаюсь управлять фокусом и размытием элемента ввода, используя состояние и useEffect. Выбор и отмена выбора ввода с помощью мыши работает нормально, но у меня также есть кнопка, которая должна включать/выключать фокус, которая не работает должным образом. Когда вы нажимаете кнопку, фокус почему-то никогда не отключается.
Должно быть, я упускаю здесь что-то простое, но это сводит меня с ума. Вот приведенный ниже код и ссылка на рабочий codepen.
const Focus = () => {
const [focused, setFocused] = useState(true)
const inputRef = useRef()
useEffect(() => {
if (focused) {
inputRef.current.focus()
} else {
inputRef.current.blur()
}
}, [focused])
return (
<div>
<input
ref={inputRef}
type="text"
onBlur={() => setFocused(false)}
onFocus={() => setFocused(true)}
/>
<button onClick={() => setFocused(!focused)}>Toggle Focus</button>
</div>
)
}
Входные данные имеют атрибут
autofocus
, просто используйте его.Это не то, что я ищу. Я хочу иметь возможность использовать кнопку для включения и выключения фокуса по моему выбору. Не работает только кнопка. Он делает что-то странное, чего я смущаюсь, но не могу найти.