Car*_*ein 7 javascript lodash reactjs react-hooks
onChange当用户在输入字段中键入内容时,我试图消除事件的反跳。
我正在引用这些线程:
我有以下代码片段,我尝试复制上面线程中提供的解决方案:
const handler = useCallback(debounce(setSearchQuery(value), 500), []);
useEffect(() => {
document.addEventListener('keydown', handleDocumentKeyDown);
handler(value);
return () => document.removeEventListener('keydown', handleDocumentKeyDown);
}, [isOpen, handleDocumentKeyDown, handler, value]);
// ...
const handleChange = (event) => {
setValue(event.target.value);
};
Run Code Online (Sandbox Code Playgroud)
错误:
未捕获的类型错误:处理程序不是函数
当用户在输入字段中键入内容时,setSerachQuery()如何消除反跳?500ms
您的情况的问题是,您不是传递函数进行反跳,而是直接调用它。您可以在去抖动中使用箭头函数,例如
const handler = useCallback(debounce(() => setSearchQuery(value), 500), []);
Run Code Online (Sandbox Code Playgroud)
完整代码
const handler = useCallback(debounce(() => setSearchQuery(value), 500), []); // arrow function here
useEffect(() => {
document.addEventListener('keydown', handleDocumentKeyDown);
handler(value);
return () => document.removeEventListener('keydown', handleDocumentKeyDown);
}, [isOpen, handleDocumentKeyDown, handler, value]);
...
const handleChange = (event) => {
setValue(event.target.value);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11922 次 |
| 最近记录: |