Skip to content

Commit cfe21aa

Browse files
committed
rm keysToEnterToCallback use props.children and isInsideRender
1 parent 71c04d1 commit cfe21aa

File tree

3 files changed

+11
-14
lines changed

3 files changed

+11
-14
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rc-queue-anim",
3-
"version": "1.8.1",
3+
"version": "1.8.2",
44
"description": "Queue animation component for react",
55
"keywords": [
66
"react",
@@ -65,7 +65,7 @@
6565
"devDependencies": {
6666
"@types/react": "^16.0.0",
6767
"antd": "3.x",
68-
"core-js": "^2.5.1",
68+
"core-js": "^3.2.1",
6969
"expect.js": "0.3.x",
7070
"precommit-hook": "^3.0.0",
7171
"rc-dialog": "~7.4.0",

src/QueueAnim.jsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class QueueAnim extends React.Component {
6161
const nextState = {
6262
prevProps: props,
6363
};
64-
if (prevProps && !$self.isInsideRender
64+
if (prevProps && props !== prevProps
6565
) {
6666
const nextChildren = toArrayChildren(props.children).filter(c => c);
6767
let currentChildren = $self.originalChildren.filter(item => item);
@@ -73,6 +73,7 @@ class QueueAnim extends React.Component {
7373
const leaveChild = children.filter(
7474
item => item && $self.keysToLeave.indexOf(item.key) >= 0,
7575
);
76+
7677
$self.leaveUnfinishedChild = leaveChild.map(item => item.key);
7778
/**
7879
* 获取 leaveChild 在 state.children 里的序列,再将 leaveChild 和 currentChildren 的重新排序。
@@ -98,7 +99,6 @@ class QueueAnim extends React.Component {
9899
currentChildren = currentChild.filter(c => c);
99100
}
100101
const newChildren = mergeChildren(currentChildren, nextChildren);
101-
102102
const childrenShow = !newChildren.length ? {} : prevChildShow;
103103
$self.keysToEnterPaused = {};
104104
const emptyBool = !nextChildren.length && !currentChildren.length && children.length;
@@ -152,7 +152,6 @@ class QueueAnim extends React.Component {
152152
delete $self.placeholderTimeoutIds[key];
153153
}
154154
});
155-
$self.keysToEnterToCallback = [...$self.keysToEnter];
156155
}
157156
return nextState;
158157
}
@@ -230,7 +229,6 @@ class QueueAnim extends React.Component {
230229
this.tweenToEnter[child.key] = true;
231230
}
232231
});
233-
this.keysToEnterToCallback = [...this.keysToEnter];
234232
this.originalChildren = toArrayChildren(getChildrenFromProps(props));
235233
this.state = {
236234
children,
@@ -251,7 +249,6 @@ class QueueAnim extends React.Component {
251249
const keysToLeave = [...this.keysToLeave];
252250
keysToEnter.forEach(this.performEnter);
253251
keysToLeave.forEach(this.performLeave);
254-
this.isInsideRender = false;
255252
}
256253

257254
componentWillUnmount() {
@@ -381,7 +378,7 @@ class QueueAnim extends React.Component {
381378
};
382379

383380
getChildrenToRender = child => {
384-
const { forcedReplay, leaveReverse, delay, interval } = this.props;
381+
const { forcedReplay, leaveReverse, delay, interval, children } = this.props;
385382
if (!child || !child.key) {
386383
return child;
387384
}
@@ -417,7 +414,7 @@ class QueueAnim extends React.Component {
417414
animation = this.getTweenEnterOrLeaveData(key, i, $delay, 'leave');
418415
} else {
419416
// 处理进场;
420-
i = this.keysToEnterToCallback.indexOf(key);
417+
i = toArrayChildren(children).findIndex(c => c && c.key === key);
421418
ref = (c) => {
422419
this.childRefs[key] = c && c.currentRef ? c.currentRef : c;
423420
}
@@ -468,7 +465,6 @@ class QueueAnim extends React.Component {
468465
delete this.keysToEnterPaused[key];
469466
ticker.clear(this.placeholderTimeoutIds[key]);
470467
delete this.placeholderTimeoutIds[key];
471-
this.isInsideRender = true;
472468
this.setState({ childrenShow });
473469
};
474470

@@ -510,7 +506,7 @@ class QueueAnim extends React.Component {
510506

511507
leaveComplete = (key, e) => {
512508
// 切换时同时触发 onComplete。 手动跳出。。。
513-
if (this.keysToEnterToCallback.indexOf(key) >= 0) {
509+
if (toArrayChildren(this.props.children).findIndex(c => c && c.key === key) >= 0) {
514510
return;
515511
}
516512
const childrenShow = this.state.childrenShow;
@@ -523,7 +519,6 @@ class QueueAnim extends React.Component {
523519
const needLeave = this.keysToLeave.some(c => childrenShow[c]);
524520
if (!needLeave) {
525521
const currentChildren = toArrayChildren(getChildrenFromProps(this.props));
526-
this.isInsideRender = true;
527522
this.setState({
528523
children: currentChildren,
529524
childrenShow,

tests/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/* eslint no-console:0 no-restricted-globals:0 */
2-
import 'core-js/es6/map';
3-
import 'core-js/es6/set';
2+
import 'core-js/es/map';
3+
import 'core-js/es/set';
4+
import 'core-js/es/array';
5+
46
import React from 'react';
57
import ReactDom from 'react-dom';
68
import expect from 'expect.js';

0 commit comments

Comments
 (0)