【发布时间】:2020-03-27 19:41:54
【问题描述】:
我正在努力解决所谓的简单去抖动问题。但不知何故,它不是等待并触发一次,而是等待但触发所有事件,直到最后一个事件。
它是反应组件的一部分。这是代码:
import debounce from "lodash.debounce";
(...)
export default () => {
const { filter, updateFilter } = useContext(AppContext);
const [searchString, setSearchString] = useState(filter.searchString);
const changeFilter = value => {
console.log(value);
};
const changeFilterDebounced = debounce(changeFilter, 3000, true);
const handleChange = e => {
let { value } = e.target;
setSearchString(value);
changeFilterDebounced(value);
};
(...)
因此,如果我在输入中输入“abc”之类的内容,就会得到
onChange={handleChange}
它会稍等片刻(三秒),然后会显示三个连续的 console.log,其值为“a”、“ab”、“abc”。我的期望是它只用“abc”触发一次。我想知道我在哪里遗漏了一些东西。尝试添加 true 作为第三个参数,但没有更改任何内容,而且我还在创建一个具有去抖动功能的特定函数,而不是像其他帖子中提到的那样每次都创建新的去抖动。
感谢您的帮助。
【问题讨论】:
-
你是如何实现去抖动功能的?
-
@MohammedAshfaq 从 lodash 导入,(已编辑问题)
标签: javascript reactjs lodash debounce