@@ -41,15 +41,19 @@ const extend = (target, ...sources) => {
41
41
} ;
42
42
43
43
const SortableMixin = ( options = defaultOptions ) => ( Component ) => class extends React . Component {
44
- sortableInstance = null ;
44
+
45
+ state = {
46
+ sortableInstance : null
47
+ } ;
48
+
45
49
sortableOptions = extend ( { } , defaultOptions , options ) ;
46
50
47
51
componentDidMount ( ) {
48
52
const sortableComponent = this . refs [ refName ] ;
49
53
const emitEvent = ( type , evt ) => {
50
54
const methodName = this . sortableOptions [ type ] ;
51
55
const method = sortableComponent [ methodName ] ;
52
- method && method . call ( sortableComponent , evt , this . sortableInstance ) ;
56
+ method && method . call ( sortableComponent , evt , this . state . sortableInstance ) ;
53
57
} ;
54
58
55
59
let copyOptions = extend ( { } , this . sortableOptions ) ;
@@ -107,7 +111,8 @@ const SortableMixin = (options = defaultOptions) => (Component) => class extends
107
111
} ) ;
108
112
109
113
const domNode = ReactDOM . findDOMNode ( sortableComponent . refs [ this . sortableOptions . ref ] || sortableComponent ) ;
110
- this . sortableInstance = Sortable . create ( domNode , copyOptions ) ;
114
+ const sortableInstance = Sortable . create ( domNode , copyOptions ) ;
115
+ this . setState ( { sortableInstance} ) ;
111
116
}
112
117
componentWillReceiveProps ( nextProps ) {
113
118
const sortableComponent = this . refs [ refName ] ;
@@ -121,15 +126,15 @@ const SortableMixin = (options = defaultOptions) => (Component) => class extends
121
126
}
122
127
}
123
128
componentWillUnmount ( ) {
124
- if ( this . sortableInstance ) {
125
- this . sortableInstance . destroy ( ) ;
126
- this . sortableInstance = null ;
129
+ if ( this . state . sortableInstance ) {
130
+ this . state . sortableInstance . destroy ( ) ;
131
+ this . setState ( { sortableInstance : null } ) ;
127
132
}
128
133
}
129
134
130
135
render ( ) {
131
136
return (
132
- < Component ref = { refName } { ...this . props } />
137
+ < Component ref = { refName } sortableInstance = { this . state . sortableInstance } { ...this . props } />
133
138
) ;
134
139
}
135
140
} ;
0 commit comments