Я следующее всплывающее окно в моем приложении, которое использует Bootstrap Вкладки:Установка минимального времени выполнения для OnMouseDown
Обратная связь вкладка имеет несколько вложенных вкладок и я добавил функциональность, так что вы можете прокручивать переполняющие суб-вкладки (слева и справа). Вот как я реализовал эту функциональность (ReactJS):
this.feedbackScrollInterval = -1;
_feedbackScroll = (id) => {
let obj = ReactDOM.findDOMNode(this.refs.feedbackNav);
let scrollWidth = obj.firstChild.scrollWidth;
let offsetWidth = obj.firstChild.offsetWidth;
if(this.feedbackScrollInterval==-1) {
this.feedbackScrollInterval = setInterval(function(){
if(id==1) {
obj.firstChild.scrollLeft -= 5;
} else {
obj.firstChild.scrollLeft += 5;
}
}, 15);
}
}
_clearFeedbackScroll =() => {
clearInterval(this.feedbackScrollInterval);
this.feedbackScrollInterval = -1;
}
и разметку для кнопок:
<Button onMouseDown={this._feedbackScroll.bind(this, 1)} onMouseUp={this._clearFeedbackScroll}><Glyphicon glyph="chevron-left"></Glyphicon></Button>
<Button onMouseDown={this._feedbackScroll.bind(this, 2)} onMouseUp={this._clearFeedbackScroll}><Glyphicon glyph="chevron-right"></Glyphicon></Button>
Вышеприведенные работает как задумано, но я хочу, чтобы добавить минимальный свиток время. Например, если мне нужно минимальное время прокрутки 250ms
, а событие mouseUp
запускается после 150ms
, я хочу, чтобы прокрутка продолжалась еще раз 100ms
, пока не был достигнут минимум.
Как это можно реализовать? (нет jQuery)
Проблема, которую я вижу в этой реализации, заключается в том, что эти переменные будут в глобальной области, такие как 'scrollStarted' и' duration'. Хотя нет ничего «неправильного» в вашем решении, я надеялся на реализацию более закрытого масштаба (если это возможно). Возможно, есть способ использовать только одно событие (вместо двух) или, возможно, обратные вызовы? – Chris
Положите их на 'this' так же, как и ваш идентификатор интервала. Ключевое слово 'let' связывает другие переменные с блоком, в котором они объявлены. –
Да, этого я и хочу избежать. – Chris