Bootstrap

antd Tree选中的时候需要获取父元素id

博主在做权限树的时候,遇到过这样一个问题。只要子元素有一个元素被选中,后端需要我把选中节点的父元素也传过去。但是antd Tree默认的checkedKeys中只有子元素全部选中的时候才会把父元素选中,checkedKeys才会包含父元素的值。
解决方法:在onCheck事件里,有两个参数checkedKeys(你选中的元素), info(包含选中子节点的信息),在info里就有他父节点的信息,可以通过info.halfCheckedKeys来获取。然后把父节点元素和子节点放在一个数组,传给后端就好了。
上代码😁

 // 选中
    onCheck = (checkedKeys, info) => {
        let checkedKey = checkedKeys.concat(info.halfCheckedKeys); // 可以在info中获取父元素值
        this.setState({
            checkedKeys: checkedKeys, // 不包括父元素
            checkedKey: checkedKey // 包括父元素
        });

    };
    
    <Tree
       checkable
        onExpand={this.onExpand}
        expandedKeys={this.state.expandedKeys}
        autoExpandParent={this.state.autoExpandParent}
        onCheck={this.onCheck}
        checkedKeys={this.state.checkedKeys}
    // defaultCheckedKeys={defaultListChecked}
    >
        {this.renderTreeNodes(resourcesList)}
    </Tree>
;