做樹組件的時候有一個需求,在請求詳情頁面的時候自動展開勾選的樹節點,如下:
下面來說一下實現這個過程的思路:
1.在請求詳情頁面的時候要拿到選中的key的數組(一般都是後臺返給的)
2.設置expandKeys屬性,將數組賦值給expandKeys;
3.還需要加入onExpand事件和autoExpandParent屬性
注意⚠️:如果只有expandKeys沒有onExpand事件,則出現的情況是值能顯示出來展開的Tree,但是點展開功能的時候無反應;autoExpandParent屬性是:是否自動展開父節點,如果爲true的話,關閉展開功能失效,所以要在onExpand的時候讓這個屬性變爲false
下面我們就按照這個步驟走:
state = {
expandedKeys: [],
autoExpandParent: true,
};
//賦值
getRoleInfo = () => {
get_department_info({ id: Id }).then(res => {
let data = res.data.responseData;
this.setState({
expandedKeys: data.parentIds //這步驟把數據存放在depExpandKeys變量中
})
});
};
//展開方法
onExpand = expandedKeys => {
this.setState({
expandedKeys,
autoExpandParent: false,
});
};
<Tree
checkable
onExpand={this.onExpand}
expandedKeys={this.state.expandedKeys}
autoExpandParent={this.state.autoExpandParent}
onCheck={this.onCheck}
checkedKeys={this.state.checkedKeys}
>
{this.renderTreeNodes(treeData)}
</Tree>
這樣就OK了~