javascript - React/Next - 我的 debounce 回调没有被正确触发
问题描述
所以我想触发文本输入变化的去抖动。
这是我的代码。带有文本搜索栏的组件:
const [searchParams, setSearchParams] = useState('');
const [searchResponse, setSearchResponse] = useState(null);
const dataFetch = async (params) => {
console.log('fetching data');
console.log('heres the param: ', params);
fetch('/api/DebounceTest', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ query: params }),
})
.then((res) => res.json())
.then((data) => data)
.then((moreData) => console.log(moreData))
.catch((e) => console.error(e));
};
// dataFetch = debounce(dataFetch, 1000);
const callDebounce = (params) => {
debounce(() => {
dataFetch(params);
}, 250);
};
const onSearchParamChanged = React.useCallback((params) => {
callDebounce(params);
}, []);
useEffect(() => {
onSearchParamChanged(searchParams);
}, [searchParams]);
这是我的去抖:
let timer;
return function () {
console.log('meow');
clearTimeout(timer);
timer = setTimeout(() => {
console.log('calling function');
fn();
}, delay);
};
};
基本上发生的事情是当计时器解决时,去抖动根本没有调用回调。没有错误。我想也许我可以()
在 callDebounce 中的 debounce cal 之后添加一个,如下所示:
const callDebounce = (params) => {
debounce(() => {
dataFetch(params);
}, 250)();
};
但是 react 会抛出错误“Unhandled Runtime Error TypeError: Object(...)(...) is not a function” 它指向我刚才提到的 debounce 调用。
任何信息都有帮助。谢谢你。
解决方案
推荐阅读
- python - 如何在经过训练的张量流模型上预测给定字符串(看不见的数据)的分类类
- angular - Angular:在 VSCode 中运行 ngcc 会导致性能问题
- ios - iOS 是否会在没有任何用户交互的情况下触发 CXEndCallAction?
- reactjs - 尽管条件不满足,但有条件的 JSX 渲染
- vue.js - 如何使用插槽在 Vue 中创建可重用的表单和输入组件?
- excel - Excel if 语句基于列表中的多个条件
- c# - 如何获取给定月份和年份C#的第一天的周数
- javascript - 选定值删除所需属性并隐藏跨度 Javascript/JQuery
- linux - 如何读取具有非 UTF(在我的情况下为 CP866)代码页中的文件名的 ISO-9660(或任何其他 FS)?
- javascript - 从 API (Javascript) 获取文本时丢失格式