diff --git a/lib/DatePickerItem.js b/lib/DatePickerItem.js index 89078b2..4873460 100644 --- a/lib/DatePickerItem.js +++ b/lib/DatePickerItem.js @@ -41,6 +41,7 @@ class DatePickerItem extends Component { this.translateY = 0; // 容器偏移的距离 this.currentIndex = MIDDLE_INDEX; // 滑动中当前日期的索引 this.moveDateCount = 0; // 一次滑动移动了多少个时间 + this._moveToTimer = null; this.state = { translateY: MIDDLE_Y, @@ -97,6 +98,8 @@ class DatePickerItem extends Component { viewport.removeEventListener('touchmove', this.handleContentTouch, false); viewport.removeEventListener('touchend', this.handleContentTouch, false); viewport.removeEventListener('mousedown', this.handleContentMouseDown, false); + + clearTimeout(this._moveToTimer); } _iniDates(date) { @@ -160,26 +163,25 @@ class DatePickerItem extends Component { this._updateDates(-1); } - this._moveTo(this.refs.scroll, this.currentIndex); + this._moveTo(this.currentIndex); } /** * 添加滑动动画 - * @param {DOM} obj DOM对象 * @param {number} angle 角度 * @return {undefined} */ - _moveTo(obj, currentIndex) { + _moveTo(currentIndex) { this.animating = true; - addPrefixCss(obj, { transition: 'transform .2s ease-out' }); + addPrefixCss(this.refs.scroll, { transition: 'transform .2s ease-out' }); this.setState({ translateY: -currentIndex * DATE_HEIGHT, }); // NOTE: There is no transitionend, setTimeout is used instead. - setTimeout(() => { + this._moveToTimer = setTimeout(() => { this.animating = false; this.props.onSelect(this.state.dates[MIDDLE_INDEX]); this._clearTransition(this.refs.scroll);