@@ -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 ) ;
@@ -133,18 +137,19 @@ const SortableMixin = (options = defaultOptions) => (Component) => class extends
133
137
initSortable ( sortableComponent ) {
134
138
this . destroySortable ( ) ;
135
139
const domNode = ReactDOM . findDOMNode ( sortableComponent . refs [ this . sortableOptions . ref ] || sortableComponent ) ;
136
- this . sortableInstance = Sortable . create ( domNode , this . populatedOptions ) ;
140
+ const sortableInstance = Sortable . create ( domNode , this . populatedOptions ) ;
141
+ this . setState ( { sortableInstance} ) ;
137
142
}
138
143
destroySortable ( ) {
139
- if ( this . sortableInstance ) {
140
- this . sortableInstance . destroy ( ) ;
141
- this . sortableInstance = null ;
144
+ if ( this . state . sortableInstance ) {
145
+ this . state . sortableInstance . destroy ( ) ;
146
+ this . setState ( { sortableInstance : null } ) ;
142
147
}
143
148
}
144
149
145
150
render ( ) {
146
151
return (
147
- < Component ref = { refName } { ...this . props } />
152
+ < Component ref = { refName } sortableInstance = { this . state . sortableInstance } { ...this . props } />
148
153
) ;
149
154
}
150
155
} ;
0 commit comments