使用lodash的debounce()
,我等待了10秒钟,然后才将搜索字词设置为应用状态。但是我想在反跳之前将searching
设置为应用状态:
onChangeText(text) {
setSearching(true);
setSearchTerm(text);
}
render(){
return(
<TextInput style={s.input}
onChangeText={_.debounce(this.onChangeText, 10000, {'leading':true} )}
/>
)
}
From the docs,这应该在超时的最前沿运行,而不是直到事件在指定的等待时间停止为止。 实际行为就像根本没有防抖一样,每次调用事件时都会运行它们而没有10秒的缓冲区。有任何想法吗?删除{'leading':true}
确实可以消除抖动,但是我需要在10秒钟之前在应用程序中设置状态。
答案 0 :(得分:0)
您可以在用户情况下指定前导true。
debounce(func, [wait=0], [options={ leading: true}])
请通过链接https://lodash.com/docs#debounce阅读文档
答案 1 :(得分:0)
看看这种方法是否有帮助:
debouncedSetSearchTerm = _.debounce(text => setSearchTerm(text), 10000)
onChangeText(text) {
setSearching(true);
debouncedSetSearchTerm(text);
}
render() {
return(
<TextInput style={s.input} onChangeText={onChangeText} />
)
}
您首先需要setSearching
,然后调用debouncedFn
,然后在经过10000个延迟后处理searchTerm
。