精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue3問題:如何實現級聯菜單的數據懶加載?

開發 前端
實現級聯菜單效果,點擊一級菜單某一項,就會加載出對應的二級菜單內容,點擊二級菜單某一項,就會加載出對應的三級菜單內容,以此類推,最后一級為五級菜單。

序言

大家好,我是大澈!

本文約3100+字,整篇閱讀大約需要5分鐘。

本文主要內容分三部分,第一部分是需求分析,第二部分是實現步驟,第三部分是問題詳解。

如果您只需要解決問題,請閱讀第一、二部分即可。

如果您有更多時間,進一步學習問題相關知識點,請閱讀至第三部分。

一、需求分析

實現級聯菜單效果,點擊一級菜單某一項,就會加載出對應的二級菜單內容,點擊二級菜單某一項,就會加載出對應的三級菜單內容,以此類推,最后一級為五級菜單。

對于加載而言,必須是懶加載效果,即點擊菜單某一項時,才會真正去請求加載對應的下一級菜單內容。

對于菜單最后一級內容,要插入一個輸入框,在輸入框內,用戶可以任意輸入版本號,并且要求輸入框不可被選中。

當然,我們的正題是數據的懶加載,級聯菜單中插入不可被選中的輸入框實現算是附加內容了。

二、實現步驟

1、為什么要使用數據懶加載

在項目中,我們使用數據的懶加載,會有如下好處:

  • 提升用戶體驗
  • 減少初始加載時間
  • 減輕網絡資源的消耗

了解了這些好處之后,再就是要了解數據懶加載的應用場景。

這部分比較有用,所以多敘述一些。

數據懶加載在以下場景中特別有用:

  • 長列表或分頁數據:當你有一個包含大量數據的列表或分頁功能時,可以使用數據懶加載來延遲加載列表項或分頁數據。只有當用戶滾動到可見范圍時才加載新的數據,從而提高初始加載速度和響應性能。
  • 圖片或媒體資源:對于包含大量圖片或媒體資源的頁面,可以使用數據懶加載來延遲加載這些資源。只有當圖片或媒體元素進入視口時才進行加載,從而減少初始加載時間和網絡資源的消耗。
  • 條件性加載:當一些數據或組件只在特定條件下才需要顯示或使用時,可以使用數據懶加載。根據條件動態加載數據或組件,避免不必要的加載和資源占用。
  • 路由級別的懶加載:在Vue的路由中,可以使用懶加載來按需加載路由組件。只有當用戶訪問某個路由時才進行組件的加載,提高初始加載速度和路由切換的性能。
  • 異步加載模塊:對于大型的Vue項目,可以使用數據懶加載來異步加載模塊,減少初始加載時間。將模塊分割成小塊,并在需要時按需加載,提高應用的性能和可維護性。

上述場景在此部分只做簡單描述,如果你有空余時間,各個場景具體代碼實例請見第三部分總結。

我們這次的需求實現,就是符合第1條場景。

2、數據懶加載代碼實例

當選中某一級時,動態加載該級下的選項。

通過lazy開啟動態加載,并通過lazyload方法來設置加載數據源。

  • lazyload方法有兩個參數,第一個參數node為當前點擊的節點,第二個resolve為數據加載完成的回調(必須調用)。
  • node可以解構出level參數,它從0開始計數,指明當前點擊節點的層級。
  • 為數據對象添加leaf屬性,是為了指明哪一級的對象是葉子節點。

模板代碼:

<template>
<!-- 級聯面板 -->
<el-cascader-panel :props="props"></el-cascader-panel>
</template>

邏輯代碼:

<script setup>
// 級聯面板配置項
const props = reactive({
// 開啟懶加載
lazy: true,
// 懶加載加載數據源方法
async lazyLoad(node, resolve) {
const { level } = node;

// 已經有數據了,不需要重復請求了
if (node.children && node.children.length > 0) return;

// 模擬掉接口
setTimeout(() => {
let result;
switch (level) {
case 0: // 一級目錄
result = [
{
value: "0",
label: "行內轉賬-手機號",
children: []
},
{
value: "1",
label: "行內轉賬-銀行賬號",
children: []
},
{
value: "2",
label: "匯款到當地銀行",
children: []
},
{
value: "3",
label: "匯款到錢包",
children: []
},
{
value: "4",
label: "轉賬到CUPD",
children: []
}
];
break;
case 1: //二級目錄
// 省略此處代碼...

break;
case 2: //三級目錄
// 省略此處代碼...

break;
case 3: //四級目錄
// 省略此處代碼...

break;
case 4: // 五級目錄
result = [
{
value: "最低系統版本",
label: "最低系統版本要求"
},
{
value: "0",
label: "不啟用"
},
{
value: "1",
label: "內測"
},
{
value: "2",
label: "上線"
}
];

// 設置五級菜單為葉子節點,無子節點
result.forEach((item) => {
item.leaf = level >= 4;
});
break;
default:
result = [];
break;
}

resolve(result);
}, 1000);
}
});
</script>

3、插入輸入框代碼實例

通過插槽和條件判斷,在級聯面板中插入輸入框,其中data.label為節點對象的名稱。

通過@click.stop阻止事件冒泡、寬度為父元素的100%、以及清除級聯面板組件一些默認樣式,實現了輸入框不可被選中的效果。

模版代碼:

<template>
<!-- 級聯面板 -->
<el-cascader-panel :props="props">
<template #default="{ data }">
<!-- 輸入框節點對象 -->
<div v-if="data.label == '最低系統版本要求'" @click.stop style="width: 100%">
<div>{{ data.label }}</div>
<div class="searchText">
<el-input v-model="searchText" :placeholder="'最低系統版本要求'"></el-input>
</div>
</div>
<div v-else>
<div>{{ data.label }}</div>
</div>
</template>
</el-cascader-panel>
</template>

樣式代碼:

<style lang="scss" scope>
.el-cascader-panel.is-bordered {
border: none;
}
.el-cascader-menu:last-child .el-cascader-node:nth-of-type(1):has(.searchText) {
margin-bottom: 30px;
padding: 0;
&:hover,
&:focus {
background: #fff;
}
}
.el-cascader-menu__list {
padding: 20px 0;
}
</style>

三、問題詳解

1、關于CascaderProps配置項的參數一覽

2、懶加載各個場景代碼實例總結

長列表或分頁數據懶加載:

<template>
<div>
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
<li v-if="loading">Loading...</li>
</ul>
</div>
</template>

<script>
export default {
data() {
return {
items: [],
loading: false,
};
},
mounted() {
this.loadMore(); // 初始加載
window.addEventListener('scroll', this.handleScroll);
},
methods: {
loadMore() {
this.loading true;
// 模擬異步加載數據
setTimeout(() => {
const newItems = /* 請求新數據 */;
this.items = this.items.concat(newItems);
this.loading = false;
}, 1000);
},
handleScroll() {
const scrollPosition = window.innerHeight + window.pageYOffset;
const contentHeight = document.documentElement.scrollHeight;
if (scrollPosition >= contentHeight && !this.loading) {
this.loadMore(); // 滾動到底部時加載更多數據
}
},
},
beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll);
},
};
</script>

圖片懶加載:

<template>
<div>
<img :src="placeholder" ref="image" style="display: none;">
</div>
</template>

<script>
export {
data() {
return {
placeholder: require('@/assets/placeholder.png'), // 占位圖
};
},
mounted() {
window.addEventListener('scroll', this.handleScroll);
},
methods: {
handleScroll() {
const imageElement = this.$refs.image;
const rect = imageElement.getBoundingClientRect();
if (rect.top < window.innerHeight) {
const src = /* 獲取圖片真實地址 */;
imageElement.src = src; // 加載圖片
window.removeEventListener('scroll', this.handleScroll); // 圖片加載后移除滾動監聽
}
},
},
beforeDestroy() {
window.removeEventListener('scroll', this.handle);
},
};
</script>

條件性數據懶加載:

<template>
<div>
<button @click="showData = true">顯示數據</button>
<div v-if="showData">
<!-- 顯示數據的組件或內容 -->
</div>
</div>
</template>

<script>
export default {
data() {
return {
showData: false,
};
},
};
</script>

路由懶加載(基于 Vue Router):

const Home = () => import('./components/Home.vue');
const About = () => import('./components/About.vue');
const Contact = () => import('./components/Contact.vue');

const routes = [
{ path: '/home', component: Home },
{ path: '/about', component: About },
{ path: '/contact', component: Contact },
];

const router = new VueRouter({
routes,
});

異步加載模塊(基于 import() 動態導入語法):

<template>
<div>
<button @click="loadModule">加載模塊</button>
<div v-if="moduleLoaded">
<!-- 顯示已加載的模塊 -->
</div>
</div>
</template>

<script>
export default {
data() {
return {
moduleLoaded: false,
};
},
methods: {
loadModule() {
import('./path/to/module.js')
.then((module) => {
// 模塊加載成功
this.moduleLoaded = true;
})
.catch((error) => {
console.error(error);
});
},
},
};
</script>
責任編輯:姜華 來源: 今日頭條
相關推薦

2022-07-20 11:13:05

前端JSONVue3

2024-02-01 09:10:04

頁面引導工具Vue3

2021-12-02 05:50:35

Vue3 插件Vue應用

2024-01-23 09:15:33

Vue3組件拖拽組件內容編輯

2024-01-03 08:20:40

2023-12-18 09:58:46

微信掃碼支付Vue3

2023-11-20 08:29:33

Vue微信掃碼授權登錄

2023-11-28 09:03:59

Vue.jsJavaScript

2024-02-27 08:27:18

元素拖拽Vue3拼圖驗證

2024-08-13 09:26:07

2022-03-10 11:04:04

Vue3Canvas前端

2024-04-11 13:10:00

Vue3Reactive響應性

2024-03-19 08:35:30

Vue3添加水印維護版權標識

2025-08-06 13:39:39

Vue3React響應性

2021-12-01 08:11:44

Vue3 插件Vue應用

2021-11-30 08:19:43

Vue3 插件Vue應用

2024-03-21 08:34:49

Vue3WebSocketHTTP

2024-11-06 10:16:22

2023-12-14 08:25:14

WatchVue.js監聽數據

2020-09-19 21:15:26

Composition
點贊
收藏

51CTO技術棧公眾號

www香蕉视频| 欧美xxxx黑人xyx性爽| 欧美电影免费观看网站| 国产日韩欧美亚洲| 91精品中文在线| 国产一二三四在线| 欧美日韩播放| 日韩一卡二卡三卡| 人妻精品无码一区二区三区| av在线电影观看| 国产成人亚洲综合a∨婷婷| 91精品国产99| 三级黄色免费观看| 日本韩国欧美超级黄在线观看| 在线观看91视频| 国产精品自拍合集| av在线播放免费| 国产98色在线|日韩| 国产精品国产三级国产aⅴ浪潮 | 欧美不卡在线播放| 国产高清在线看| 国产suv精品一区二区三区| 日韩美女主播视频| 国产精品成人aaaa在线| 国产精品久久久久久久久久10秀| 亚洲国产99精品国自产| 亚洲免费999| 午夜av不卡| 亚洲综合图片区| 亚洲黄色一区二区三区| 凸凹人妻人人澡人人添| 国产乱码字幕精品高清av| 日韩av电影国产| 国产精品a成v人在线播放| 亚洲乱码精品| 深夜福利日韩在线看| 黄色国产在线观看| youjizz亚洲| 日韩三级电影网址| 欧美性受xxxxxx黑人xyx性爽| 日本不卡一二三| 欧美日韩激情美女| 精品丰满人妻无套内射| 超鹏97在线| 亚洲欧洲无码一区二区三区| 亚洲国产欧美一区二区三区不卡| 亚洲人在线观看视频| 成人免费高清视频在线观看| 亚洲伊人久久综合| 国产又色又爽又黄又免费| 日韩av一区二| 国产成人午夜视频网址| 99精品在线播放| 亚洲影院在线| 91po在线观看91精品国产性色| 欧美黄片一区二区三区| 中文字幕亚洲精品乱码| 成年无码av片在线| 久久r这里只有精品| 一级欧洲+日本+国产| 久久国产精彩视频| 私库av在线播放| 欧美日本二区| 国内精久久久久久久久久人| 日本在线观看中文字幕| 中文亚洲字幕| 日韩av不卡在线| 亚洲精品国产无码| 美女视频免费一区| 91色精品视频在线| 亚洲va天堂va欧美ⅴa在线| 国产精品91一区二区| 国产精品一区二区欧美| 亚洲人妻一区二区三区| 国产欧美一区二区精品久导航| 青青成人在线| 亚洲免费视频一区二区三区| 亚洲免费观看高清完整 | 亚洲精品乱码久久久久久蜜桃麻豆| 欧美第一黄色网| 中文字幕亚洲高清| 日韩av一级电影| 亚洲一区国产精品| 婷婷色在线观看| 国产亚洲1区2区3区| 一区二区三区偷拍| 大桥未久在线播放| 在线视频你懂得一区| 欧美日韩久久婷婷| 久久精品色综合| 一区二区国产精品视频| 中文字幕av播放| 99精品国产福利在线观看免费 | 电影一区电影二区| 日韩欧美一级二级三级| 中文字幕av观看| 久久伦理在线| 久久久久这里只有精品| 中文字幕 欧美激情| 国产高清精品久久久久| 欧美日韩一区在线观看视频| 精品视频在线一区二区| 欧美性猛交xxxx乱大交极品| 五月天婷婷影视| 欧洲亚洲视频| 久久综合电影一区| 久久久久亚洲av成人毛片韩| 激情综合网av| 老牛影视免费一区二区| av在线播放国产| 一本大道久久a久久精二百| 91香蕉视频在线观看视频| 免费一区二区| 久久久久中文字幕2018| 国产一区二区小视频| 91美女片黄在线| 国产精品igao激情视频| av成人在线观看| 亚洲精品美女视频| 国产精品老熟女一区二区| 日韩av在线发布| 国严精品久久久久久亚洲影视| 欧美黄色激情| 色噜噜狠狠成人中文综合 | 人人妻人人爽人人澡人人精品 | 欧美/亚洲一区| 国产精品黄视频| 爽爽视频在线观看| 亚洲一二三区在线观看| 91免费视频污| 久久久久久美女精品| 国产成人精品av在线| 免费国产羞羞网站视频| 亚洲欧美激情在线| 亚洲欧美在线精品| 欧美色网址大全| 91av在线影院| 婷婷在线免费观看| 亚洲国产wwwccc36天堂| 久久久久久久久久久影视| 国产精品久久久久久影院8一贰佰| 欧美最猛黑人xxxx黑人猛叫黄| 风流老熟女一区二区三区| 一区二区三区免费| 亚欧精品在线视频| 午夜日韩视频| 91蜜桃网站免费观看| 97caopron在线视频| 91精品国产综合久久久蜜臀粉嫩 | 国产成人三级| 热99精品只有里视频精品| 日韩一级片免费| 亚洲午夜私人影院| 国产chinese中国hdxxxx| 狠狠噜噜久久| 国产三区精品| 在线黄色的网站| 亚洲天堂开心观看| av手机天堂网| 中文字幕一区二区三区四区| 鲁一鲁一鲁一鲁一av| 97精品中文字幕| 成人自拍性视频| 老司机在线视频二区| 日韩一区二区在线播放| 久久久久97国产| 99久久久久免费精品国产| 日本免费不卡一区二区| 亚洲a级精品| 国产精品久久久久久av下载红粉 | 久久这里只有精品99| 成人av免费播放| 亚洲一二三四在线观看| 欧美性xxxx图片| 老司机免费视频久久| 亚洲激情电影在线| 久久三级中文| 91成人国产在线观看| 国产爆初菊在线观看免费视频网站 | www.色综合.com| 老太脱裤让老头玩ⅹxxxx| 午夜精品在线| 欧美一级视频在线观看| h视频在线免费| 日韩一区二区三区电影| www..com国产| 国产精品全国免费观看高清| 黑人性生活视频| 国产婷婷精品| 伊人久久大香线蕉精品| www国产精品| 国产精品男人爽免费视频1| 五月花成人网| 亚洲美女动态图120秒| 97精品人妻一区二区三区在线| 亚洲二区在线视频| 中国美女黄色一级片| 丁香激情综合五月| 色多多视频在线播放| 一区精品久久| 亚洲视频小说| 久久综合另类图片小说| 国产精品网址在线| 国产福利电影在线播放| 日韩在线播放视频| 无码国产精品高潮久久99| 欧美人与性动xxxx| 在线观看国产亚洲| 亚洲美女精品一区| 精品人妻互换一区二区三区| 国产精品99久久久久久有的能看| 国产日产欧美视频| 欧美~级网站不卡| 午夜午夜精品一区二区三区文| 国产精品国产| 91免费视频国产| 成人va天堂| 午夜精品一区二区三区在线播放| av影片在线看| 日韩精品在线视频美女| a级片免费观看| 欧美日韩美少妇| 天天干,天天干| 五月婷婷综合在线| 天天看片中文字幕| 国产精品美女一区二区三区| 特大黑人巨人吊xxxx| 国产高清久久久久| 涩涩网站在线看| 美日韩一级片在线观看| 国产精品免费成人| 国产精品一卡| 18黄暴禁片在线观看| 午夜精品久久99蜜桃的功能介绍| 亚洲高清在线观看一区| 亚洲天堂日韩在线| 久久偷看各类wc女厕嘘嘘偷窃| 粉嫩久久久久久久极品| 99影视tv| 天堂va在线高清一区| 91丨九色丨国产在线| 91麻豆精品国产综合久久久 | 中文字幕在线观看视频网站| 亚洲午夜久久久久久久久电影网| 男的操女的网站| 1000部国产精品成人观看| 中文字幕在线观看二区| 亚洲国产高清在线| 日本综合在线观看| 国产精品美女久久久久久久久| 久久婷婷五月综合| 国产精品少妇自拍| 国产探花视频在线| 自拍av一区二区三区| a在线视频播放观看免费观看| 亚洲欧美日韩国产手机在线| 日本黄色小说视频| 亚洲国产婷婷综合在线精品| 国产精品16p| 高跟丝袜一区二区三区| 亚洲AV无码成人精品区东京热| 欧美性少妇18aaaa视频| 婷婷激情五月综合| 欧美日韩精品福利| 国产肥老妇视频| 亚洲福利在线观看| 你懂的免费在线观看视频网站| 亚洲人成在线播放| 3d成人动漫在线| 乱亲女秽乱长久久久| 男女在线视频| 国产91av在线| 欧美日韩五区| 91欧美激情另类亚洲| 成人台湾亚洲精品一区二区 | 污污网站免费在线观看| 亚洲人成电影网站色…| 免费网站看v片在线a| 久久久久在线观看| 精品成人av| 亚洲999一在线观看www| 都市激情久久| 亚洲成色最大综合在线| 中文在线日韩| 北条麻妃在线一区| 精品一区二区三区免费| 亚洲av成人精品一区二区三区 | 免费久久99精品国产自| 久久人体视频| 东北少妇不带套对白| 日韩中文字幕一区二区三区| 免费高清视频在线观看| 久久无码av三级| 高h视频免费观看| 色综合天天性综合| 99精品国产99久久久久久97| 亚洲欧美日韩国产中文| 成年人黄视频在线观看| 青青久久av北条麻妃黑人| 国产一区二区三区免费在线| 久久伊人一区二区| 亚洲精品小说| 黄色一级二级三级| 成人午夜私人影院| 黄大色黄女片18免费| 亚洲亚洲人成综合网络| 中文字幕网址在线| 日韩精品中文字| 人交獸av完整版在线观看| 国产精品吊钟奶在线| 红杏aⅴ成人免费视频| 亚洲欧洲一区二区在线观看| 国产伦理一区| 久久国产免费视频| 国产精品久久福利| 亚洲熟妇无码乱子av电影| 日韩午夜电影在线观看| 在线视频1区2区| 欧美自拍视频在线| 国产精品对白| www.亚洲成人网| 狠狠色丁香久久婷婷综合丁香| 国产 欧美 在线| 午夜精品免费在线| 国产高清视频免费观看| 最近2019中文字幕一页二页 | 日韩欧美在线视频免费观看| 亚洲第一第二区| 久久国产色av| 色综合久久久| 亚洲成人第一| 青青国产91久久久久久| 高潮毛片无遮挡| 色婷婷综合久久久久中文一区二区 | 亚洲精品久久7777| 中文 欧美 日韩| 国产亚洲xxx| 香蕉视频亚洲一级| 欧美日韩电影一区二区| 99热这里只有精品8| 国产chinesehd精品露脸| 亚洲色图制服诱惑| 99re只有精品| 久久亚洲精品国产亚洲老地址| 欧美高清免费| 亚洲乱码国产乱码精品天美传媒| 天堂蜜桃91精品| 日韩女同一区二区三区| 在线免费观看一区| 香蕉视频网站在线观看| 国产欧美日韩精品丝袜高跟鞋| 日本久久综合| 一个色综合久久| 亚洲私人影院在线观看| 国产精品欧美亚洲| 欧美成人激情视频免费观看| 精品视频91| 菠萝蜜视频在线观看入口| 国产美女一区二区三区| 久久免费视频精品| 精品粉嫩超白一线天av| 麻豆mv在线看| 欧美性bbwbbwbbwhd| 日本vs亚洲vs韩国一区三区| 美女网站视频色| 欧美一区二区在线视频| 牛牛在线精品视频| 久久久久久欧美精品色一二三四| 老鸭窝91久久精品色噜噜导演| 成年人在线免费看片| 91麻豆精品国产| ririsao久久精品一区| 欧美性大战久久久久| 久久国产福利国产秒拍| 99视频只有精品| 日韩精品极品视频| 成人自拍视频网| 永久免费网站视频在线观看| a级高清视频欧美日韩| 国产成人自拍偷拍| 久久亚洲精品一区| 久久亚洲黄色| 日本xxxx黄色| 亚洲不卡一区二区三区| 国产一区精品| 91超碰在线电影| 先锋亚洲精品| 久久中文免费视频| 亚洲女同精品视频| va天堂va亚洲va影视| 国产精品无码一区二区在线| 国产精品系列在线| 蜜桃在线一区二区| 国产精品老女人视频| 亚洲视频一二| 亚洲色图100p| 日韩经典中文字幕在线观看| 亚洲成人高清| 国产福利一区视频| 洋洋av久久久久久久一区|