antd為Tree組件標題附加操作按鈕功能
一、前言
使用antd的tree組件實現(xiàn)下面這樣的模塊樹,點擊標題請求其下列表的數(shù)據(jù),點擊標題旁邊的操作圖標則執(zhí)行對應的增刪改功能:

二、實現(xiàn)方案
1.封裝一個設置樹標題的方法,通過開關改變state來控制圖標按鈕是否可見:

處理樹數(shù)據(jù)(name、children)
const setTree = (module_data: any) => {
return module_data.map((item: any) => {
let _json = { ...item };
_json.name = setTreeTitle(item);
_json.children = item.children ? setTree(item.children) : [];
return _json;
});
};賦值給Tree的treeData:
<Tree
...
treeData={setTree(treeData)}
...
fieldNames={{ title: 'name', key: 'id', children: 'children' }}
/>2.樹標題被選中時,則調用刷新列表的方法:
onSelect={(value: any, e: any) => {
if (e.selected) {
treeSelectFunc(value[0]);
}
}}3.但需要注意的坑是,由于我增加了刪除功能,當執(zhí)行刪除操作后,樹處于選中狀態(tài)的話就會報錯,因為處于選中狀態(tài)就會調用刷新列表的方法,但該數(shù)據(jù)已經(jīng)被我刪除了,可能因此報錯:

所以我們需要創(chuàng)建一個state來存儲當前選中的數(shù)據(jù):
const [selectId, setSelectId] = useState<any>(null);
然后在onSelect方法中判斷新選中的數(shù)據(jù)是否是當前數(shù)據(jù),如果是則不再執(zhí)行請求方法:
onSelect={(value: any, e: any) => {
const selectValue = value[0]
if (e.selected && selectValue !== selectId) {
treeSelectFunc(selectValue);
setSelectId(selectValue)
}
}}這樣就解決了刪除數(shù)據(jù)可能報錯的問題。
三、總結
到此這篇關于antd為Tree組件標題附加操作按鈕功能的文章就介紹到這了,更多相關antd為Tree組件按鈕功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
redis-benchmark并發(fā)壓力測試的問題解析
這篇文章主要介紹了redis-benchmark并發(fā)壓力測試的問題解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Redis中ServiceStack.Redis和StackExchange.Redis區(qū)別詳解
本文主要介紹了Redis中ServiceStack.Redis和StackExchange.Redis區(qū)別詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Redis高并發(fā)情況下并發(fā)扣減庫存項目實戰(zhàn)
本文主要介紹了Redis高并發(fā)情況下并發(fā)扣減庫存項目實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04

