@@ -41,6 +41,13 @@ class DatePickerItem extends Component {
4141 this . _iniDates ( this . props . value ) ;
4242 }
4343
44+ componentDidMount ( ) {
45+ const viewport = this . viewport ;
46+ viewport . addEventListener ( 'touchstart' , this . handleContentTouch , false ) ;
47+ viewport . addEventListener ( 'touchmove' , this . handleContentTouch , false ) ;
48+ viewport . addEventListener ( 'touchend' , this . handleContentTouch , false ) ;
49+ viewport . addEventListener ( 'mousedown' , this . handleContentMouseDown , false ) ;
50+ }
4451
4552 componentWillReceiveProps ( nextProps ) {
4653 if ( nextProps . value . getTime ( ) === this . props . value . getTime ( ) ) {
@@ -67,6 +74,14 @@ class DatePickerItem extends Component {
6774 ! shallowEqual ( nextState , this . state ) ;
6875 }
6976
77+ componentWillUnmount ( ) {
78+ const viewport = this . viewport ;
79+ viewport . removeEventListener ( 'touchstart' , this . handleContentTouch , false ) ;
80+ viewport . removeEventListener ( 'touchmove' , this . handleContentTouch , false ) ;
81+ viewport . removeEventListener ( 'touchend' , this . handleContentTouch , false ) ;
82+ viewport . removeEventListener ( 'mousedown' , this . handleContentMouseDown , false ) ;
83+ }
84+
7085 _iniDates ( date ) {
7186 const { typeName } = this . props ;
7287 const dates = Array ( ...Array ( DATE_LENGTH ) )
@@ -258,11 +273,8 @@ class DatePickerItem extends Component {
258273 return (
259274 < div className = "datepicker-col-1" >
260275 < div
261- className = "datepicker-viewport"
262- onTouchStart = { this . handleContentTouch }
263- onTouchMove = { this . handleContentTouch }
264- onTouchEnd = { this . handleContentTouch }
265- onMouseDown = { this . handleContentMouseDown } >
276+ ref = { viewport => this . viewport = viewport } // eslint-disable-line
277+ className = "datepicker-viewport" >
266278 < div className = "datepicker-wheel" >
267279 < ul
268280 ref = "scroll"
0 commit comments