在反应es6

时间:2017-04-17 06:01:20

标签: javascript reactjs lodash

我正在尝试在搜索表单中实现去抖,前端框架是使用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来执行搜索。但它不能正常工作,它仍然多次调用搜索方法来完成打字。

我在这里缺少什么?

1 个答案:

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