我想使用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} />;
}
答案 0 :(得分:1)
debounce打破了同步程序流并使其异步。你不能简单地从它获得返回值。你应该看看这个:
How do I return the response from an asynchronous call?
但是你的例子对于那个用例看起来也很糟糕。对于确定性渲染方法,只需在没有去抖动处理程序的流程中获取此信息。您应该只在渲染周期时渲染状态。
debounced函数只应用于在onChange事件后触发setState。