Skip to content

Commit 0a11cd6

Browse files
committed
fix: Tree unctrolled drag expandedKeys
fix ant-design/ant-design#23851
1 parent 710f325 commit 0a11cd6

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/Tree.tsx

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -385,22 +385,21 @@ class Tree extends React.Component<TreeProps, TreeState> {
385385
}
386386

387387
onNodeDragStart = (event: React.MouseEvent<HTMLDivElement>, node: NodeInstance) => {
388-
const { expandedKeys, keyEntities, treeData } = this.state;
388+
const { expandedKeys, keyEntities } = this.state;
389389
const { onDragStart } = this.props;
390390
const { eventKey } = node.props;
391391

392392
this.dragNode = node;
393393

394394
const newExpandedKeys = arrDel(expandedKeys, eventKey);
395-
const flattenNodes: FlattenNode[] = flattenTreeData(treeData, newExpandedKeys);
396395

397396
this.setState({
398397
dragging: true,
399398
dragNodesKeys: getDragNodesKeys(eventKey, keyEntities),
400-
expandedKeys: newExpandedKeys,
401-
flattenNodes,
402399
});
403400

401+
this.setExpandedKeys(newExpandedKeys);
402+
404403
if (onDragStart) {
405404
onDragStart({ event, node: convertNodePropsToEventData(node.props) });
406405
}
@@ -461,9 +460,7 @@ class Tree extends React.Component<TreeProps, TreeState> {
461460
}
462461

463462
if (!('expandedKeys' in this.props)) {
464-
this.setState({
465-
expandedKeys: newExpandedKeys,
466-
});
463+
this.setExpandedKeys(newExpandedKeys);
467464
}
468465

469466
if (onDragEnter) {
@@ -758,7 +755,6 @@ class Tree extends React.Component<TreeProps, TreeState> {
758755

759756
onNodeExpand = (e: React.MouseEvent<HTMLDivElement>, treeNode: EventDataNode) => {
760757
let { expandedKeys } = this.state;
761-
const { treeData } = this.state;
762758
const { onExpand, loadData } = this.props;
763759
const { key, expanded } = treeNode;
764760

@@ -777,8 +773,7 @@ class Tree extends React.Component<TreeProps, TreeState> {
777773
expandedKeys = arrDel(expandedKeys, key);
778774
}
779775

780-
const flattenNodes: FlattenNode[] = flattenTreeData(treeData, expandedKeys);
781-
this.setUncontrolledState({ expandedKeys, flattenNodes }, true);
776+
this.setExpandedKeys(expandedKeys);
782777

783778
if (onExpand) {
784779
onExpand(expandedKeys, {
@@ -1004,6 +999,20 @@ class Tree extends React.Component<TreeProps, TreeState> {
1004999
}
10051000
};
10061001

1002+
/** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */
1003+
setExpandedKeys = (expandedKeys: Key[]) => {
1004+
const { treeData } = this.state;
1005+
1006+
const flattenNodes: FlattenNode[] = flattenTreeData(treeData, expandedKeys);
1007+
this.setUncontrolledState(
1008+
{
1009+
expandedKeys,
1010+
flattenNodes,
1011+
},
1012+
true,
1013+
);
1014+
};
1015+
10071016
/**
10081017
* Only update the value which is not in props
10091018
*/

0 commit comments

Comments
 (0)