@@ -105,9 +105,8 @@ const SortableMixin = (options = defaultOptions) => (Component) => class extends
105
105
} , 0 ) ;
106
106
} ;
107
107
} ) ;
108
-
109
- const domNode = ReactDOM . findDOMNode ( sortableComponent . refs [ this . sortableOptions . ref ] || sortableComponent ) ;
110
- this . sortableInstance = Sortable . create ( domNode , copyOptions ) ;
108
+ this . populatedOptions = copyOptions
109
+ this . initSortable ( sortableComponent ) ;
111
110
}
112
111
componentWillReceiveProps ( nextProps ) {
113
112
const sortableComponent = this . refs [ refName ] ;
@@ -120,7 +119,23 @@ const SortableMixin = (options = defaultOptions) => (Component) => class extends
120
119
sortableComponent . setState ( newState ) ;
121
120
}
122
121
}
122
+ componentDidUpdate ( prevProps ) {
123
+ const model = this . sortableOptions . model ;
124
+ const prevItems = prevProps [ model ] ;
125
+ const currItems = this . props [ model ] ;
126
+ if ( prevItems !== currItems ) {
127
+ this . initSortable ( this . refs [ refName ] ) ;
128
+ }
129
+ }
123
130
componentWillUnmount ( ) {
131
+ this . destroySortable ( ) ;
132
+ }
133
+ initSortable ( sortableComponent ) {
134
+ this . destroySortable ( ) ;
135
+ const domNode = ReactDOM . findDOMNode ( sortableComponent . refs [ this . sortableOptions . ref ] || sortableComponent ) ;
136
+ this . sortableInstance = Sortable . create ( domNode , this . populatedOptions ) ;
137
+ }
138
+ destroySortable ( ) {
124
139
if ( this . sortableInstance ) {
125
140
this . sortableInstance . destroy ( ) ;
126
141
this . sortableInstance = null ;
0 commit comments