【发布时间】:2017-05-03 19:30:30
【问题描述】:
我正在玩 React Native 和 lodash 的 debounce。
使用下面的代码只会让它像延迟而不是去抖动一样工作。
<Input
onChangeText={(text) => {
_.debounce(()=> console.log("debouncing"), 2000)()
}
/>
如果我输入像“foo”这样的输入,我希望控制台只记录一次去抖动。现在它记录了 3 次“去抖动”。
【问题讨论】:
-
onChangeText每次更改输入时都会调用,输入 foo 将使 debounce 函数调用 3 次,因此行为正确。 -
@jmac 我很确定问题总是在我身上????但是我想要它如何存档所以它只触发一次,触发后可以再次触发
-
_.debounce 创建了一个新函数,它应该作为回调直接传递,但是你已经将它包装在额外的函数中,并且每次发生变化时手动创建+调用去抖动函数的新实例。您应该消除这个额外的包装器:
onChangeText={_.debounce((text) => console.log('debouncing', text), 2000)}。不用担心参数,它会将它们传递给您的处理程序。
标签: javascript reactjs react-native lodash