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

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

复现步骤:

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

这是正常情况下的样子

clipboard.png

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

clipboard.png

这是添加子节点的代码

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
})
阅读 3.8k
1 个回答

个人觉得你应该没有将新加的结点的key放到expandedKeys里面去。
你查一下state的变化,就知道了。
如果expandedKeys中包含了刚才新加的结节,而没有展开的话,你可以尝试在添加结点的state后,再设置expandedKeys
如:

this.setState({treeData}, () => this.setState({expandedKeys}));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题