@@ -73,6 +73,8 @@ class Tree extends Component {
7373 onDragMoving : noop ,
7474 onDragBefore : noop ,
7575 onDragAfter : noop ,
76+ customNodeTpl : noop ,
77+ onLoadData : noop ,
7678 } ;
7779
7880 static propsTypes = {
@@ -109,6 +111,8 @@ class Tree extends Component {
109111 onDragMoving : PropTypes . func ,
110112 onDragBefore : PropTypes . func ,
111113 onDragAfter : PropTypes . func ,
114+ customNodeTpl : PropTypes . func ,
115+ onLoadData : PropTypes . func ,
112116 } ;
113117
114118 constructor ( props ) {
@@ -245,7 +249,7 @@ class Tree extends Component {
245249 treeData : [ ...backTree ] ,
246250 maxLevel : null ,
247251 selectedValue : [ ...allSelectedLowest ] ,
248- isUnfold,
252+ isUnfold : searchText ? true : undefined ,
249253 disabled,
250254 } ) ,
251255 preSelectedList : allSelectedLowest ,
@@ -344,10 +348,41 @@ class Tree extends Component {
344348 * @param node
345349 */
346350 onFoldNodeAction = ( data , node ) => {
347- const backData = store . onFoldNode ( data , node ) ;
348- this . setState ( {
349- treeData : [ ...backData ] ,
350- } ) ;
351+ if ( this . props . isDynamicLoad && ! node ?. children ?. length ) {
352+ node . isLoading = true ;
353+ this . setState ( {
354+ treeData : [ ...this . state . treeData ] ,
355+ } , ( ) => {
356+ this . props . onLoadData ( data , node ) . then ( res => {
357+ node . isLoading = false
358+ const backData = store . onFoldNode ( res , node ) ;
359+
360+ // 如果点击的节点被选中,则其子节点也被选中,更新选中节点状态
361+ if ( this . props . supportCheckbox && node . checked ) {
362+ const selectedResult = store . getSelectedLowestNodeList (
363+ this . state . selectedValue ,
364+ this . getSelectedMoreList ( backData , node ) ,
365+ node ,
366+ ) . filter ( item => item . id !== node . id ) ;
367+ this . props . onSelectedNode ( node , selectedResult ) ;
368+ }
369+
370+ // 更新 allTreeData(用作筛选)
371+ const currentNode = store . findNodeById ( this . state . allTreeData , node . id ) ;
372+ Object . assign ( currentNode , node ) ;
373+
374+ this . setState ( {
375+ allTreeData : this . state . allTreeData ,
376+ treeData : [ ...backData ] ,
377+ } ) ;
378+ } )
379+ } ) ;
380+ } else {
381+ const backData = store . onFoldNode ( data , node ) ;
382+ this . setState ( {
383+ treeData : [ ...backData ] ,
384+ } ) ;
385+ }
351386 } ;
352387
353388 /**
@@ -679,6 +714,7 @@ class Tree extends Component {
679714 onDragMoving,
680715 onDragAfter,
681716 customNodeTpl,
717+ isDynamicLoad,
682718 } = this . props ;
683719
684720 const {
@@ -732,6 +768,7 @@ class Tree extends Component {
732768 customNodeTpl,
733769 removeNode,
734770 addNode,
771+ isDynamicLoad,
735772 } }
736773 >
737774 < div className = { `${ selector } ${ className } ` } style = { style } >
0 commit comments