javascript - 在React es6中实现去抖

标签 javascript reactjs lodash

我正在尝试以搜索形式实现去抖,前端框架是react js,使用es6。

与此去抖功能相关的几个方法是:

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 上它将设置名为“searchAble”的状态值,而 onChange 将调用方法 search 来执行搜索。但它无法正常工作,它仍然多次调用搜索方法来完成输入。

我在这里缺少什么?

最佳答案

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" 
/>

关于javascript - 在React es6中实现去抖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43445969/

相关文章:

javascript - 在Promise中,response.status返回的是其他Promise而不是状态码

css - react Bootstrap : Vertical alignment of row's columns?

javascript - 删除集合中的第一个匹配项

javascript - 正确的lodash方法

javascript - 在 d3 中将饼图的一部分隔开?

javascript - HTML 中不同图像的一张 Base64 编码图像

javascript - 对象未传递到主干中的模板

javascript - 我认为我的 css 类已导入,但我已正确导入它

javascript - 从外部源绑定(bind)图像

javascript - 如何使用 lodash 从子项中查找父项名称并打印路径