我正在尝试实现智能搜索的逻辑。我在onChangeText
上的TextInput
中使用以下代码
clearTimeout(this.timeout);
this.timeout = 0
this.timeout = this.timer(text);
这里我要清除最后一个timeOut
并用timer
方法设置一个新值
timer = (searchText) => {
const { selectedFilter } = this.state
setTimeout(function () {
//Hit Api
console.log("new instance" + selectedFilter)
}, 2000);
}
上面的代码可以正常工作,但是有一个问题,以前的监听器没有被清除。所以我要多次获得控制台。请建议我我在做什么错。 提前致谢。
答案 0 :(得分:1)
您只需要返回setTimeout调用返回的值,就像这样:
timer = (searchText) => {
const { selectedFilter } = this.state
return setTimeout(function () {
//Hit Api
console.log("new instance" + selectedFilter)
}, 2000);
}
此外,您不需要在this.timeout = 0
之前做this.timeout = this.timer(text);