ant-design tree 中拖拽排序后 rc-tree内部的expandKeys的状态出错了

ant-design tree 中拖拽排序后 rc-tree内部的expandKeys的状态出错了

复现步骤:

拖拽排序后,在排序的节点上添加子节点,通过设置expandKeys还是无法使该节点无法展开,
而且会导致其他节点的展开收起状态出错,需要手动点击下叶子几点的展开收起,方可恢复正常。
正常情况下,添加子节点通过设置expandKeys可以使当前节点展开,不知道是这个问题该如何解决

这是正常情况下的样子

https://img4.mukewang.com/5cada1580001236402420242.jpg

这是排序完以后添加子节点的样子,标记处没有自动展开

https://img1.mukewang.com/5cada15a000132d902470213.jpg

这是添加子节点的代码

let groups = this.props.groupList.list


const { expandedKeys } = this.state    


if( !!groups ){

    groups.map( (group,index) => {

        group.isAddInp = false

        if( group.dg_id === 'ready' )

            groups.splice(index,1)    

    })

}


let addChildTreeNode = {

    pId: node.dg_id,

    name: '',

    dg_id: 'ready',

    isAddInp: true

}


groups.push(addChildTreeNode)


let treeData = this.buildTreeDatas(groups, "0")


if(node.dg_id !== '0' && expandedKeys.indexOf(node.dg_id) === -1 )

    expandedKeys.push(node.dg_id)


this.setState({

    treeData,

    expandedKeys,

    autoExpandParent: false

})


慕容708150
浏览 622回答 1
1回答

心有法竹

个人觉得你应该没有将新加的结点的key放到expandedKeys里面去。你查一下state的变化,就知道了。如果expandedKeys中包含了刚才新加的结节,而没有展开的话,你可以尝试在添加结点的state后,再设置expandedKeys。如:this.setState({treeData}, () => this.setState({expandedKeys}));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript