我正在构建一个在按键上执行API请求的函数,但我想要这个去抖动。
目前无效并产生错误:lodash.js:10319 Uncaught TypeError: Expected a function
这是一个带有控制台日志而不是异步请求的代码段,这也不起作用!
import React from 'react';
const _ = require('lodash');
const method = () => {
return _.debounce(testFunc(), 3000);
};
const testFunc = () => {
console.log('echo echo test test');
};
const SearchBox = ({ onTypingSearch, searchTerm }) => (
<form>
<p>Search: {searchTerm}</p>
<input
onChange={(e) => {
console.log(e.target.value);
onTypingSearch(e.target.value);
console.log(method);
method();
}}
value={searchTerm}
/>
</form>
);
export default SearchBox;
答案 0 :(得分:4)
你必须去除该功能,而不是调用它的结果:
此:
const method = () => {
return _.debounce(testFunc(), 3000);
};
对此:
const method = () => {
return _.debounce(testFunc, 3000);
};
更新
你设置它的方式,method
会返回一个去抖动功能。因此调用method()
将返回一个函数。然后你必须打电话给它:method()()
。
最好这样做:
const method = _.debounce(() => {
return testFunc();
}, 3000);
如果你想要args:
const method = _.debounce((e) => {
return testFunc(e);
}, 3000);
然后,您可以继续按照您目前的方式调用:method()
。