欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue+element?tree懶加載更新數(shù)據(jù)的示例代碼

 更新時間:2022年09月23日 17:10:00   作者:敲代碼的小姑娘·  
這篇文章主要介紹了vue+element?tree懶加載更新數(shù)據(jù),文中給大家補充介紹了Vue Element Ui 樹形表懶加載新增、修改、刪除等操作后局部數(shù)據(jù)更新的詳細(xì)代碼,感興趣的朋友跟隨小編一起看看吧

使用element tree實現(xiàn)懶加載,更新某一節(jié)點的數(shù)據(jù)

1.tree 懶加載

只需要在el-tree標(biāo)簽上面添加lazy,load屬性,load的接收是一個函數(shù)。這里貼上官網(wǎng)給出的方法

在這里插入圖片描述

在這里插入圖片描述

<el-tree
   :data="treeList"
   ref="tree"
   class="vue-tree"
   lazy
   :load="loadNode"
   :highlight-current="true"
   :node-key="nodeKey"
   @node-click="nodeClick"
   :expand-on-click-node="false"
   :props="defaultProps"
 ></el-tree>

2.load方法使用

// 懶加載獲取樹形結(jié)構(gòu)
loadNode(node, resolve) {
//調(diào)用接口時,我們的需求是第一級傳參為0,后面為當(dāng)前節(jié)點的唯一表示id,可以根據(jù)需求而定
// node.level為0時,就是tree的第一級
 const spaceParentGuid = node.level === 0 ? 0 : node.data.spaceGuid
 getDeviceLazyTree({ spaceParentGuid }).then(({ data }) => {
   resolve(
     data.data.map(item => {
       return {
         ...item,
         leaf: !item.hasChildren // 此參數(shù)用來判斷當(dāng)前節(jié)點是否為葉子節(jié)點
       }
     })
   )
 })
},

3.leaf的作用

當(dāng)我們使用的tree懶加載,只會加載到我們請求的那一層級,所以當(dāng)我們在葉子節(jié)點請求時,請求完不會出現(xiàn)數(shù)據(jù),這樣的體驗就不是很好,這個時候就需要借助tree的props里面isLeaf的配置方法了

在這里插入圖片描述

defaultProps: {
  children: 'children',
  label: 'spaceName',
  isLeaf: 'leaf'
}

加上此字段,就可以清晰的看出哪些節(jié)點為葉子節(jié)點了

4.我們一旦使用懶加載的方式的話

那我們在對tree接口進(jìn)行增刪改查時,及時刷新數(shù)據(jù)時,就會造成我們還需要從新獲取接口

其實如果我們仔細(xì)觀察的話,我們會發(fā)現(xiàn)已經(jīng)請求過的節(jié)點,我們收起,再次打開是不會請求接口的,這樣的話,我們可以這么做

/**
 * 單獨刷新節(jié)點
 * guid: 當(dāng)前節(jié)點的父級唯一標(biāo)識節(jié)點
 */
refreshTreeNode(guid) {
  let node = this.$refs.tree.getNode(guid)
  if (node) {
    node.loaded = false
    node.expand() // 主動調(diào)用展開節(jié)點方法,重新查詢該節(jié)點下的所有子節(jié)點
  }
},

Vue Element Ui 樹形表懶加載新增、修改、刪除等操作后局部數(shù)據(jù)更新

前言      

 element 樹表懶加載在每次對表格進(jìn)行修改刪除等操作后需要刷新表格數(shù)據(jù)時都需要重新請求,在逐增展開加載,這樣對用戶來說不太友好所以我們稍微解決一些

第一步:定義一個Map

用來儲存表格懶加載每次展開時所點擊的當(dāng)前行{tree,treeNode,resolve}

data(){
    return{
        maps: new Map(), // 先在你的data內(nèi)搞一個map用于存儲接下來必要的數(shù)據(jù)
    }
}

第二步:在load方法內(nèi)使用map 

每次點擊展開load方法都會返回{tree,treeNode,resolve}, 定義好map后在每一次執(zhí)行l(wèi)oad方法調(diào)用接口成功返回數(shù)據(jù)后將load返回的參數(shù){tree,treeNode,resolve}儲存到map中去,用于后續(xù)操作中使用

   load(tree, treeNode, resolve) {
      if (treeNode) {
         // 這是我的方法和接口不必照搬只需要將this.maps.set()這一句放到相應(yīng)位置即可
        selectBom({
          code: tree.code,
          ifMba: this.ifMba,
        }).then((res) => {
          if (res.code == 200) {
            resolve(res.data);
            this.maps.set(tree.code, { tree, treeNode, resolve }); 
            // 上面這一句是將你每一次展開的節(jié)點存到你剛剛在data內(nèi)定義的map內(nèi),其他的不重要
            // tree.code是唯一值
          }
        });
      }
    },

 第三步:查詢map中對應(yīng)數(shù)據(jù)

已經(jīng)將每次展開load返回的{tree,treeNode,resolve}存儲到map中后,我們現(xiàn)在就需要取出來再傳給load方法了,調(diào)用refreshLoadTree方法時需要給它傳一個你所操作節(jié)點父節(jié)點ID,他會通過這個ID去map中檢索出相對應(yīng)的數(shù)據(jù)然后再調(diào)用load方法傳給它以達(dá)到局部更新的目的

    refreshLoadTree(pId) {
      // 根據(jù)更改節(jié)點的父ID取出相應(yīng)數(shù)據(jù)
      const { tree, treeNode, resolve } = this.maps.get(pId);
       
      this.$set(
        // 不要忘記在你的table上寫ref
        this.$refs.LoadTable.store.states.lazyTreeNodeMap, 
        pId,
        []
      );
      if (tree) {
        // 將取出對應(yīng)數(shù)據(jù)再傳給load方法
        this.load(tree, treeNode, resolve); 
      }
    },

第四步:調(diào)用 refreshLoadTree方法

只需要在你修改或刪除等操作接口返回成功時調(diào)用并傳一個操作節(jié)點父ID即可實現(xiàn)局部數(shù)據(jù)更新

//最后只需要在你做修改刪除或者其他操作的地方調(diào)用即可
//括號內(nèi)傳操作節(jié)點的父節(jié)點(如果自己拿不到可以在接口成功時讓后端返回)
this.refreshLoadTree(res.data.code);

這是基礎(chǔ)版本,因為本人項目原因會再次之上改動許多并未附上全部(僅作為記錄)

到此這篇關(guān)于vue+element tree懶加載更新數(shù)據(jù)的文章就介紹到這了,更多相關(guān)vue element tree懶加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2結(jié)合echarts實現(xiàn)一個地圖的效果

    vue2結(jié)合echarts實現(xiàn)一個地圖的效果

    這篇文章主要介紹了vue2結(jié)合echarts實現(xiàn)一個地圖的效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家何用vue和echarts實現(xiàn)一個地圖有一定的幫助,感興趣的朋友一起看看吧
    2024-03-03
  • vue-router單頁面路由

    vue-router單頁面路由

    這篇文章主要為大家詳細(xì)介紹了vue-router單頁面路由的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue使用once修飾符,使事件只能觸發(fā)一次問題

    vue使用once修飾符,使事件只能觸發(fā)一次問題

    這篇文章主要介紹了vue使用once修飾符,使事件只能觸發(fā)一次問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue3項目typescript如何export引入(imported)的interface問題

    vue3項目typescript如何export引入(imported)的interface問題

    這篇文章主要介紹了vue3項目typescript如何export引入(imported)的interface問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • VsCode工具開發(fā)vue項目必裝插件清單(推薦!)

    VsCode工具開發(fā)vue項目必裝插件清單(推薦!)

    對于很多使用vscode編寫vue項目的新手同學(xué)來說,可能不知道使用什么插件,下面這篇文章主要給大家介紹了關(guān)于VsCode工具開發(fā)vue項目必裝插件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • vue使用@include或@mixin報錯的問題及解決

    vue使用@include或@mixin報錯的問題及解決

    這篇文章主要介紹了vue使用@include或@mixin報錯的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue3項目中的el-carousel 輪播圖的使用

    vue3項目中的el-carousel 輪播圖的使用

    Carousel(走馬燈)是一種常見的前端組件,通常用于展示多個項目(通常是圖片或內(nèi)容塊)的輪播效果,這篇文章主要介紹了vue3項目中的el-carousel 輪播圖的使用,需要的朋友可以參考下
    2024-02-02
  • 詳解vue中axios封裝與api接口封裝管理

    詳解vue中axios封裝與api接口封裝管理

    axios的封裝和api接口的統(tǒng)一管理,其實主要目的就是在幫助我們簡化代碼和利于后期的更新維護(hù),在vue項目中,和后臺交互獲取數(shù)據(jù)這塊,我們通常使用的是axios庫,本文就給大家介紹一下axios封裝與api接口封裝管理,需要的朋友可以參考下
    2023-06-06
  • vue使用moment如何將時間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時間格式

    vue使用moment如何將時間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時間格式

    這篇文章主要介紹了vue使用moment如何將時間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時間格式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue3使用element?ui的方法實例

    vue3使用element?ui的方法實例

    vue3出來好一段時間了,一直想著用一下,下面這篇文章主要給大家介紹了關(guān)于vue3使用element?ui的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評論