【发布时间】:2022-01-10 03:55:54
【问题描述】:
我有 2 个外部事件,input 和 keydown 用于输入元素,当输入触发时,它将在 React 组件中调用 setInput。当arrowDown 的keydown 事件被触发时,理想情况下输入值应该是handleInput 中设置的值,但它是空的,我错过了什么吗?
const SearchBox : React.FunctionComponent<ISearchProps> = React.memo((props: ISearchProps) => {
const [input, setInput] = React.useState({value: '', redirect: false});
useEffect(() => {
const container = document.querySelector('.xxx');
container.addEventListener('input', handleInput);
container.addEventListener('keydown', handleKeyboardEvent);
}, []);
const handleInput = (e) => {
setInput({value: e.currentTarget.value, redirect: false});
}
const handleKeyboardEvent = (e) => {
switch (e.key) {
case 'ArrowDown':
console.log(input);
setActiveSuggestionIndex(activeSuggestionIndex === suggestions.length - 1 ? 0 : activeSuggestionIndex + 1);
e.preventDefault();
break;
default:
break;
}
}
}
【问题讨论】:
-
你调用事件的方式不是很 ReactJS 方式,但尝试切换到这个:
setInput({...input, value: e.currentTarget.value, redirect: false});
标签: javascript reactjs react-hooks dom-events