@@ -81,14 +81,15 @@ export default class SortableList extends Component {
81
81
rowsLayouts : null ,
82
82
containerLayout : null ,
83
83
data : this . props . data ,
84
+ isMounting : true ,
84
85
activeRowKey : null ,
85
86
activeRowIndex : null ,
86
87
releasedRowKey : null ,
87
88
sortingEnabled : this . props . sortingEnabled ,
88
89
scrollEnabled : this . props . scrollEnabled
89
90
} ;
90
91
91
- componentWillMount ( ) {
92
+ componentDidMount ( ) {
92
93
this . state . order . forEach ( ( key ) => {
93
94
this . _rowsLayouts [ key ] = new Promise ( ( resolve ) => {
94
95
this . _resolveRowLayout [ key ] = resolve ;
@@ -105,17 +106,18 @@ export default class SortableList extends Component {
105
106
this . _resolveFooterLayout = resolve ;
106
107
} ) ;
107
108
}
108
- }
109
109
110
- componentDidMount ( ) {
111
110
this . _onUpdateLayouts ( ) ;
111
+
112
+ this . setState ( { isMounting : false } ) ;
112
113
}
113
114
114
- componentWillReceiveProps ( nextProps ) {
115
- const { data, order} = this . state ;
116
- let { data : nextData , order : nextOrder } = nextProps ;
115
+ componentDidUpdate ( prevProps , prevState ) {
116
+ const { data : currentData , order : currentOrder , scrollEnabled} = this . state ;
117
+ const { data : prevData } = prevState ;
118
+ let { data : nextData , order : nextOrder } = this . props ;
117
119
118
- if ( data && nextData && ! shallowEqual ( data , nextData ) ) {
120
+ if ( currentData && nextData && ! shallowEqual ( currentData , nextData ) ) {
119
121
nextOrder = nextOrder || Object . keys ( nextData )
120
122
uniqueRowKey . id ++ ;
121
123
this . _rowsLayouts = { } ;
@@ -125,7 +127,7 @@ export default class SortableList extends Component {
125
127
} ) ;
126
128
} ) ;
127
129
128
- if ( Object . keys ( nextData ) . length > Object . keys ( data ) . length ) {
130
+ if ( Object . keys ( nextData ) . length > Object . keys ( currentData ) . length ) {
129
131
this . setState ( {
130
132
animated : false ,
131
133
data : nextData ,
@@ -140,21 +142,13 @@ export default class SortableList extends Component {
140
142
} ) ;
141
143
}
142
144
143
- } else if ( order && nextOrder && ! shallowEqual ( order , nextOrder ) ) {
145
+ } else if ( currentOrder && nextOrder && ! shallowEqual ( currentOrder , nextOrder ) ) {
144
146
this . setState ( { order : nextOrder } ) ;
145
147
}
146
- }
147
-
148
- componentDidUpdate ( prevProps , prevState ) {
149
- const { data, scrollEnabled} = this . state ;
150
- const { data : prevData } = prevState ;
151
148
152
- if ( data && prevData && ! shallowEqual ( data , prevData ) ) {
149
+ if ( currentData && prevData && ! shallowEqual ( currentData , prevData ) ) {
153
150
this . _onUpdateLayouts ( ) ;
154
151
}
155
- if ( prevProps . scrollEnabled !== scrollEnabled ) {
156
- this . setState ( { scrollEnabled : prevProps . scrollEnabled } )
157
- }
158
152
}
159
153
160
154
scrollBy ( { dx = 0 , dy = 0 , animated = false } ) {
@@ -209,13 +203,15 @@ export default class SortableList extends Component {
209
203
}
210
204
211
205
render ( ) {
206
+ if ( this . state . isMounting ) return null ;
207
+
212
208
let {
213
- contentContainerStyle,
214
- innerContainerStyle,
215
- horizontal,
216
- style,
217
- showsVerticalScrollIndicator,
218
- showsHorizontalScrollIndicator,
209
+ contentContainerStyle,
210
+ innerContainerStyle,
211
+ horizontal,
212
+ style,
213
+ showsVerticalScrollIndicator,
214
+ showsHorizontalScrollIndicator,
219
215
snapToAlignment,
220
216
scrollEventThrottle,
221
217
decelerationRate,
0 commit comments