最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1.tree 懶加載

只需要在el-tree標(biāo)簽上面添加lazy,load屬性,load的接收是一個(gè)函數(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方法使用

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

3.leaf的作用

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

在這里插入圖片描述

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

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

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

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

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

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

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

前言      

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

第一步:定義一個(gè)Map

用來(lái)儲(chǔ)存表格懶加載每次展開(kāi)時(shí)所點(diǎn)擊的當(dāng)前行{tree,treeNode,resolve}

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

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

每次點(diǎn)擊展開(kāi)load方法都會(huì)返回{tree,treeNode,resolve}, 定義好map后在每一次執(zhí)行l(wèi)oad方法調(diào)用接口成功返回?cái)?shù)據(jù)后將load返回的參數(shù){tree,treeNode,resolve}儲(chǔ)存到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 }); 
            // 上面這一句是將你每一次展開(kāi)的節(jié)點(diǎn)存到你剛剛在data內(nèi)定義的map內(nèi),其他的不重要
            // tree.code是唯一值
          }
        });
      }
    },

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

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

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

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

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

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

這是基礎(chǔ)版本,因?yàn)楸救隧?xiàng)目原因會(huì)再次之上改動(dòng)許多并未附上全部(僅作為記錄)

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

相關(guān)文章

  • Nuxt的路由動(dòng)畫(huà)效果案例

    Nuxt的路由動(dòng)畫(huà)效果案例

    這篇文章主要介紹了Nuxt的路由動(dòng)畫(huà)效果案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • element-ui中實(shí)現(xiàn)tree子節(jié)點(diǎn)部分選中時(shí)父節(jié)點(diǎn)也選中

    element-ui中實(shí)現(xiàn)tree子節(jié)點(diǎn)部分選中時(shí)父節(jié)點(diǎn)也選中

    這篇文章主要介紹了element-ui中實(shí)現(xiàn)tree子節(jié)點(diǎn)部分選中時(shí)父節(jié)點(diǎn)也選中的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue如何根據(jù)數(shù)值判斷顏色

    vue如何根據(jù)數(shù)值判斷顏色

    這篇文章主要介紹了vue如何根據(jù)數(shù)值判斷顏色問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 八種Vue組件間通訊方式合集(推薦)

    八種Vue組件間通訊方式合集(推薦)

    這篇文章主要介紹了八種Vue組件間通訊方式合集(推薦),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 在vue-cli 3中給stylus、sass樣式傳入共享的全局變量

    在vue-cli 3中給stylus、sass樣式傳入共享的全局變量

    這篇文章主要介紹了在vue-cli 3中, 給stylus、sass樣式傳入共享的全局變量,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue3切換路由時(shí)頁(yè)面空白問(wèn)題解決辦法

    vue3切換路由時(shí)頁(yè)面空白問(wèn)題解決辦法

    在使用Vue3時(shí),有時(shí)頁(yè)面修改后會(huì)出現(xiàn)空白,這篇文章主要介紹了vue3切換路由時(shí)頁(yè)面空白問(wèn)題解決辦法,文中介紹的步驟可以有效解決頁(yè)面空白問(wèn)題,需要的朋友可以參考下
    2024-09-09
  • Vue各種loader的基本配置與使用示例教程

    Vue各種loader的基本配置與使用示例教程

    這篇文章主要介紹了Vue?各種loader的基本配置與使用,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Vue3封裝hooks實(shí)現(xiàn)實(shí)時(shí)獲取麥克風(fēng)音量

    Vue3封裝hooks實(shí)現(xiàn)實(shí)時(shí)獲取麥克風(fēng)音量

    這篇文章主要為大家詳細(xì)介紹了Vue3如何通過(guò)封裝一個(gè)hooks實(shí)現(xiàn)實(shí)時(shí)獲取麥克風(fēng)音量功能,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2024-03-03
  • Vue Hook Event 深度解讀

    Vue Hook Event 深度解讀

    Hook Event 是 Vue 的自定義事件結(jié)合生命周期鉤子實(shí)現(xiàn)的一種從組件外部為組件注入額外生命周期方法的功能,本文重點(diǎn)給大家介紹Vue Hook Event 解讀,感興趣的朋友一起看看吧
    2023-01-01
  • Vue3新特性之在Composition API中使用CSS Modules

    Vue3新特性之在Composition API中使用CSS Modules

    這篇文章主要介紹了Vue3新特性之在Composition API中使用CSS Modules,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

宝坻区| 都兰县| 农安县| 城固县| 北票市| 林周县| 五莲县| 商都县| 加查县| 辉南县| 黄骅市| 龙胜| 临颍县| 伊吾县| 工布江达县| 咸宁市| 道孚县| 台州市| 新民市| 夹江县| 涟源市| 天水市| 肥城市| 抚顺县| 南昌市| 南华县| 塔河县| 益阳市| 神池县| 汉寿县| 临泽县| 宁城县| 石台县| 延长县| 沁源县| 江阴市| 新兴县| 社旗县| 炎陵县| 区。| 沙坪坝区|