@@ -61,7 +61,7 @@ class QueueAnim extends React.Component {
61
61
const nextState = {
62
62
prevProps : props ,
63
63
} ;
64
- if ( prevProps && ! $self . isInsideRender
64
+ if ( prevProps && props !== prevProps
65
65
) {
66
66
const nextChildren = toArrayChildren ( props . children ) . filter ( c => c ) ;
67
67
let currentChildren = $self . originalChildren . filter ( item => item ) ;
@@ -73,6 +73,7 @@ class QueueAnim extends React.Component {
73
73
const leaveChild = children . filter (
74
74
item => item && $self . keysToLeave . indexOf ( item . key ) >= 0 ,
75
75
) ;
76
+
76
77
$self . leaveUnfinishedChild = leaveChild . map ( item => item . key ) ;
77
78
/**
78
79
* 获取 leaveChild 在 state.children 里的序列,再将 leaveChild 和 currentChildren 的重新排序。
@@ -98,7 +99,6 @@ class QueueAnim extends React.Component {
98
99
currentChildren = currentChild . filter ( c => c ) ;
99
100
}
100
101
const newChildren = mergeChildren ( currentChildren , nextChildren ) ;
101
-
102
102
const childrenShow = ! newChildren . length ? { } : prevChildShow ;
103
103
$self . keysToEnterPaused = { } ;
104
104
const emptyBool = ! nextChildren . length && ! currentChildren . length && children . length ;
@@ -152,7 +152,6 @@ class QueueAnim extends React.Component {
152
152
delete $self . placeholderTimeoutIds [ key ] ;
153
153
}
154
154
} ) ;
155
- $self . keysToEnterToCallback = [ ...$self . keysToEnter ] ;
156
155
}
157
156
return nextState ;
158
157
}
@@ -230,7 +229,6 @@ class QueueAnim extends React.Component {
230
229
this . tweenToEnter [ child . key ] = true ;
231
230
}
232
231
} ) ;
233
- this . keysToEnterToCallback = [ ...this . keysToEnter ] ;
234
232
this . originalChildren = toArrayChildren ( getChildrenFromProps ( props ) ) ;
235
233
this . state = {
236
234
children,
@@ -251,7 +249,6 @@ class QueueAnim extends React.Component {
251
249
const keysToLeave = [ ...this . keysToLeave ] ;
252
250
keysToEnter . forEach ( this . performEnter ) ;
253
251
keysToLeave . forEach ( this . performLeave ) ;
254
- this . isInsideRender = false ;
255
252
}
256
253
257
254
componentWillUnmount ( ) {
@@ -381,7 +378,7 @@ class QueueAnim extends React.Component {
381
378
} ;
382
379
383
380
getChildrenToRender = child => {
384
- const { forcedReplay, leaveReverse, delay, interval } = this . props ;
381
+ const { forcedReplay, leaveReverse, delay, interval, children } = this . props ;
385
382
if ( ! child || ! child . key ) {
386
383
return child ;
387
384
}
@@ -417,7 +414,7 @@ class QueueAnim extends React.Component {
417
414
animation = this . getTweenEnterOrLeaveData ( key , i , $delay , 'leave' ) ;
418
415
} else {
419
416
// 处理进场;
420
- i = this . keysToEnterToCallback . indexOf ( key ) ;
417
+ i = toArrayChildren ( children ) . findIndex ( c => c && c . key === key ) ;
421
418
ref = ( c ) => {
422
419
this . childRefs [ key ] = c && c . currentRef ? c . currentRef : c ;
423
420
}
@@ -468,7 +465,6 @@ class QueueAnim extends React.Component {
468
465
delete this . keysToEnterPaused [ key ] ;
469
466
ticker . clear ( this . placeholderTimeoutIds [ key ] ) ;
470
467
delete this . placeholderTimeoutIds [ key ] ;
471
- this . isInsideRender = true ;
472
468
this . setState ( { childrenShow } ) ;
473
469
} ;
474
470
@@ -510,7 +506,7 @@ class QueueAnim extends React.Component {
510
506
511
507
leaveComplete = ( key , e ) => {
512
508
// 切换时同时触发 onComplete。 手动跳出。。。
513
- if ( this . keysToEnterToCallback . indexOf ( key ) >= 0 ) {
509
+ if ( toArrayChildren ( this . props . children ) . findIndex ( c => c && c . key === key ) >= 0 ) {
514
510
return ;
515
511
}
516
512
const childrenShow = this . state . childrenShow ;
@@ -523,7 +519,6 @@ class QueueAnim extends React.Component {
523
519
const needLeave = this . keysToLeave . some ( c => childrenShow [ c ] ) ;
524
520
if ( ! needLeave ) {
525
521
const currentChildren = toArrayChildren ( getChildrenFromProps ( this . props ) ) ;
526
- this . isInsideRender = true ;
527
522
this . setState ( {
528
523
children : currentChildren ,
529
524
childrenShow,
0 commit comments