@@ -385,22 +385,21 @@ class Tree extends React.Component<TreeProps, TreeState> {
385
385
}
386
386
387
387
onNodeDragStart = ( event : React . MouseEvent < HTMLDivElement > , node : NodeInstance ) => {
388
- const { expandedKeys, keyEntities, treeData } = this . state ;
388
+ const { expandedKeys, keyEntities } = this . state ;
389
389
const { onDragStart } = this . props ;
390
390
const { eventKey } = node . props ;
391
391
392
392
this . dragNode = node ;
393
393
394
394
const newExpandedKeys = arrDel ( expandedKeys , eventKey ) ;
395
- const flattenNodes : FlattenNode [ ] = flattenTreeData ( treeData , newExpandedKeys ) ;
396
395
397
396
this . setState ( {
398
397
dragging : true ,
399
398
dragNodesKeys : getDragNodesKeys ( eventKey , keyEntities ) ,
400
- expandedKeys : newExpandedKeys ,
401
- flattenNodes,
402
399
} ) ;
403
400
401
+ this . setExpandedKeys ( newExpandedKeys ) ;
402
+
404
403
if ( onDragStart ) {
405
404
onDragStart ( { event, node : convertNodePropsToEventData ( node . props ) } ) ;
406
405
}
@@ -461,9 +460,7 @@ class Tree extends React.Component<TreeProps, TreeState> {
461
460
}
462
461
463
462
if ( ! ( 'expandedKeys' in this . props ) ) {
464
- this . setState ( {
465
- expandedKeys : newExpandedKeys ,
466
- } ) ;
463
+ this . setExpandedKeys ( newExpandedKeys ) ;
467
464
}
468
465
469
466
if ( onDragEnter ) {
@@ -758,7 +755,6 @@ class Tree extends React.Component<TreeProps, TreeState> {
758
755
759
756
onNodeExpand = ( e : React . MouseEvent < HTMLDivElement > , treeNode : EventDataNode ) => {
760
757
let { expandedKeys } = this . state ;
761
- const { treeData } = this . state ;
762
758
const { onExpand, loadData } = this . props ;
763
759
const { key, expanded } = treeNode ;
764
760
@@ -777,8 +773,7 @@ class Tree extends React.Component<TreeProps, TreeState> {
777
773
expandedKeys = arrDel ( expandedKeys , key ) ;
778
774
}
779
775
780
- const flattenNodes : FlattenNode [ ] = flattenTreeData ( treeData , expandedKeys ) ;
781
- this . setUncontrolledState ( { expandedKeys, flattenNodes } , true ) ;
776
+ this . setExpandedKeys ( expandedKeys ) ;
782
777
783
778
if ( onExpand ) {
784
779
onExpand ( expandedKeys , {
@@ -1004,6 +999,20 @@ class Tree extends React.Component<TreeProps, TreeState> {
1004
999
}
1005
1000
} ;
1006
1001
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
+
1007
1016
/**
1008
1017
* Only update the value which is not in props
1009
1018
*/
0 commit comments