日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

antd為Tree組件標題附加操作按鈕功能_Redis

作者:曲鳥??????? ? 更新時間: 2022-10-12 編程語言

一、前言

使用antd的tree組件實現下面這樣的模塊樹,點擊標題請求其下列表的數據,點擊標題旁邊的操作圖標則執行對應的增刪改功能:

二、實現方案

1.封裝一個設置樹標題的方法,通過開關改變state來控制圖標按鈕是否可見:?

處理樹數據(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.但需要注意的坑是,由于我增加了刪除功能,當執行刪除操作后,樹處于選中狀態的話就會報錯,因為處于選中狀態就會調用刷新列表的方法,但該數據已經被我刪除了,可能因此報錯:?

所以我們需要創建一個state來存儲當前選中的數據:

const [selectId, setSelectId] = useState<any>(null);

然后在onSelect方法中判斷新選中的數據是否是當前數據,如果是則不再執行請求方法:

onSelect={(value: any, e: any) => {
  const selectValue = value[0]
  if (e.selected && selectValue !== selectId) {
    treeSelectFunc(selectValue);
    setSelectId(selectValue)
  }
}}

這樣就解決了刪除數據可能報錯的問題。

三、總結

原文鏈接:https://juejin.cn/post/7132016113277534216

欄目分類
最近更新