我正在尝试在搜索表单中实现去抖,前端框架是使用es6的反应js。
与此去抖功能相关的几种方法是:
handleSearchForm( event ) {
this.setState( {
searchAble: event.target.value
} )
}
search() {
console.log( this.state.searchAble )
}
我在输入字段onChange
属性中使用lodash debounce,并在onKeyUp
属性中设置状态,如下所示:
<input type="text" className="form-control input-sm" placeholder="Search item by SKU, Price, Title etc..."
onKeyUp={ this.handleSearchForm.bind( this ) }
onChange={
_.debounce( () => {
this.search( this )
}, 2050 ).bind( this )
}
/>
所以这个想法是在keyup上设置一个名为&#39; searchAble&#39;的状态的值。和onChange这将调用方法search
来执行搜索。但它不能正常工作,它仍然多次调用搜索方法来完成打字。
我在这里缺少什么?
答案 0 :(得分:1)
https://github.com/nkbt/react-debounce-input
请进入存储库并按照说明进行操作。我认为它可以帮助你并记住一件事
“通过按Enter键立即发送当前值的通知。默认启用。通知值遵循与去抖动通知相同的规则,因此如果长度较小,则minLength - 空值''将被发回。“
示例代码
<DebounceInput
type="number"
onChange={event => this.setState({value: event.target.value})}
placeholder="Name"
className="user-name"
/>