我有一个反应原生应用程序,滑块从0到100%。每次用户触摸此滑块onValueChange
时,都会触发,通过套接字将更改后的值发送到服务器。
这是代码
<Slider
step={1}
minimumValue={0}
maximumValue={100}
value={this.state.value}
onValueChange={val => {
this.setState({ whiteValue: val })
socket.emit('channel', val)
}
}
/>
问题在于每次用户触摸滑块时(即使他没有修改该值),onValueChange
每0.3秒触发一次。
因为我希望通过套接字将更改后的值发送到我的服务器,所以服务器被值淹没,并且无法足够快地处理它们。
&#34;减少&#34;最好的方法是什么?发射率?
感谢任何帮助。
答案 0 :(得分:1)
您可能需要参考https://github.com/facebook/react/issues/2454,debouncing正是您所需要的,但您可能需要自己实现它。我很可能会这样做:
<Slider
step={1}
minimumValue={0}
maximumValue={100}
value={this.state.value}
onValueChange={val => {
if (this.oldVal === val) return;
else {
this.oldVal = val;
this.setState({ whiteValue: val })
socket.emit('channel', val)
}
}
}
/>