lodash debounce没有射击功能

时间:2017-08-09 11:02:39

标签: javascript reactjs ecmascript-6 lodash

我想使用lodash debouce方法来改善客户在输入框中输入输入时的用户体验。由于某种原因,去抖功能不会从被去抖的函数返回值。

有人能发现可能出错的地方吗?

import debounce from "lodash/debounce"; 


render() {

   const inputValid = () => {
      console.log('triggered');
      return this.state.input.length > 0;
   };

   let d = debounce(inputValid, 100);
   d();
   console.log(d()); // this gets logged as undefined although I 
                     //thought it would be either true or false

   return <input onChange="updateInput" value={this.state.input} />;

} 

1 个答案:

答案 0 :(得分:1)

debounce打破了同步程序流并使其异步。你不能简单地从它获得返回值。你应该看看这个:

How do I return the response from an asynchronous call?

但是你的例子对于那个用例看起来也很糟糕。对于确定性渲染方法,只需在没有去抖动处理程序的流程中获取此信息。您应该只在渲染周期时渲染状态。

debounced函数只应用于在onChange事件后触发setState。