У меня есть полоса прокрутки, и я хочу прокручивать ее на 40 пикселей при нажатии на кнопку, и, удерживая эту же кнопку, она непрерывно прокручивается
Так что я использовал событие onClick для одного перехода 40px, и я использовалonMouseDown и onMouseUp для эффекта непрерывной прокрутки
Проблема в том, что onMouseUp также запускает событие onClick ... поэтому полоса прокрутки перемещается на 40px больше, когда мы отпускаем кнопку мыши, и это дает плохой эффект
Я использовал setInterval внутри onMouseDown:
clickScroll = () => {
const slider : HTMLElement = this.state.scrollRef.current;
slider.scrollBy(40, 0)
}
holdScroll = (type : string) => {
const slider : HTMLElement = this.state.scrollRef.current;
this.setState({
interval : setInterval(() => {
slider.scrollBy(walk, 0)
}, 100)
})
}
stopHoldScroll = () => {
clearInterval(this.state.interval);
}
И мою кнопку:
<Button onClick={this.clickScroll}
onMouseDown={this.holdScroll}
onMouseUp={this.stopHoldScroll}>
<span className="fas fa-chevron-right" />
</Button>
Есть идеи о том, как отделить эти 2 разных эффекта?спасибо