精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产自产女人91一区在线观看| 日韩禁在线播放| 中文字幕在线中文| 天堂中文在线资源| 日本午夜一区二区| 欧美裸身视频免费观看| 野花社区视频在线观看| 国产成人视屏| 色综合久久中文字幕| 三年中文高清在线观看第6集 | 亚洲国产婷婷香蕉久久久久久| 欧美 国产 小说 另类| gogo在线高清视频| 国产亚洲欧美中文| 粉嫩av四季av绯色av第一区| 在线观看免费视频a| 亚洲激情一区| 久久伊人精品视频| 欧美 日韩 国产 成人 在线观看| 一区二区三区四区高清视频| 欧美日韩午夜在线| 东京热加勒比无码少妇| 国精产品一区一区三区mba下载| 亚洲国产精品精华液ab| 国产在线视频欧美一区二区三区| 国产精品高潮呻吟AV无码| 性伦欧美刺激片在线观看| 欧美精品免费在线| 永久免费观看片现看| 美女亚洲一区| 亚洲国产精品va在线看黑人| 国产精品久久久久久久av福利| 欧美日韩免费看片| 精品久久久一区| 欧美a级免费视频| 成人短视频在线观看| 国产精品麻豆一区二区| 日韩妆和欧美的一区二区| 色综合视频在线| 成人av网站免费| 国产99视频精品免费视频36| 夜夜躁狠狠躁日日躁av| 久久国产精品无码网站| 国产精品黄页免费高清在线观看| 亚洲AV无码成人精品区东京热| 亚洲精品色图| 午夜精品理论片| 国产污视频在线看| 亚洲午夜精品久久久久久app| 欧美成年人网站| 99视频只有精品| 欧美一区激情| 欧美富婆性猛交| 福利所第一导航| 欧美日韩在线大尺度| 欧美激情精品久久久久久久变态 | 久久人人99| 最近2019免费中文字幕视频三 | 日本天堂影院在线视频| 99久久777色| 欧美二区三区在线| 可以直接在线观看的av| 国产视频一区二区在线| 亚洲精品中文综合第一页| 午夜免费福利在线观看| 亚洲三级久久久| 国产在线无码精品| 国产精品蜜臀| 欧美性20hd另类| 簧片在线免费看| 91成人小视频| 亚洲黄在线观看| 波多野结衣 在线| 日韩欧美精品综合| 色与欲影视天天看综合网| 国产在线视频卡一卡二| 亚洲综合日本| 国产日韩欧美夫妻视频在线观看 | 日韩精品www| 日韩乱码人妻无码中文字幕久久| 精品少妇3p| 日韩精品在线播放| 亚洲精品视频网址| 欧美日韩岛国| 日本国产欧美一区二区三区| 亚洲一区二区三区高清视频| 国产成人亚洲综合a∨婷婷| 九九99久久| 在线a免费看| 亚洲国产精品久久不卡毛片 | 国产一区二区三区四区五区入口| 动漫美女被爆操久久久| 国产在线视频福利| 亚洲男女一区二区三区| 茄子视频成人免费观看| 亚洲精品777| 精品亚洲一区二区三区在线播放 | 亚洲欧美激情一区二区| 国产一区二区网| 日本久久二区| 日韩成人中文字幕| 中文字幕在线有码| 久久精品观看| 国产欧美韩日| 国产成人l区| 在线区一区二视频| 小毛片在线观看| 亚洲h色精品| 日本久久亚洲电影| 国产小视频免费观看| 中文欧美字幕免费| 久草青青在线观看| youjizz亚洲| 久久精品影视伊人网| 黄色片视频免费| 成人av网站在线观看免费| 最新不卡av| 日韩欧美精品一区二区综合视频| 亚洲成人av在线播放| 日韩黄色免费观看| 奇米影视7777精品一区二区| 久久久久久99| av老司机在线观看| 欧美xfplay| 丝袜美腿小色网| 久久国产精品区| 亚洲国产一区二区精品视频| 精品91久久| 日韩av资源在线播放| 国产亚洲精品av| 国产成人av自拍| 在线视频一二三区| 亚洲成人精品综合在线| 最新国产精品拍自在线播放| 人人妻人人爽人人澡人人精品| 不卡电影一区二区三区| 日韩精品在线观看av| 嫩呦国产一区二区三区av| 日韩视频免费大全中文字幕| 国产又粗又黄又爽的视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产精品第二页| 久草福利在线视频| 色爱区综合激月婷婷| 扒开jk护士狂揉免费| 久久精品1区| 日本欧洲国产一区二区| 国产另类xxxxhd高清| 国产亚洲欧洲高清| 久久久久久亚洲av无码专区| 久久久久久久综合日本| 日本美女高潮视频| 色综合蜜月久久综合网| 国产色视频一区| 午夜老司机在线观看| 欧美精品 日韩| 日韩成人短视频| 国产激情精品久久久第一区二区 | 国产一区二区不卡| 欧美一区二区三区综合| 中文字幕久久精品一区二区| 欧美大片网站在线观看| 日本黄色不卡视频| 欧美性xxxx极品高清hd直播| 性欧美13一14内谢| 久久精品免费看| 欧美 亚洲 视频| 国产精品视频3p| 日产精品久久久一区二区福利| 国产三级电影在线观看| 欧美久久久久久久久| 国产黄在线免费观看| 99麻豆久久久国产精品免费 | 精品一区二区三区在线观看视频| 欧美人与物videos| 欧美在线一卡| 欧美人与性动xxxx| 久一视频在线观看| 国产欧美一区视频| 国产精品19p| 麻豆精品91| 伊人久久在线观看| 中文字幕av一区二区三区人| 成人免费福利视频| sm在线播放| www.日韩av.com| 天堂v在线观看| 欧美日韩国产综合久久| 日韩欧美不卡视频| 中文字幕一区在线观看视频| 亚洲天堂成人av| 精品在线免费视频| 国产a级一级片| 亚洲国产精品久久久天堂| 久久99精品久久久久久三级| 国产精品久久乐| 国内精品一区二区三区| 888av在线| 日韩大陆欧美高清视频区| 在线观看国产精品入口男同| 婷婷开心久久网| 国产精品99久久久久久成人| 久久久久国产精品免费免费搜索| 在线观看中文av| 日韩avvvv在线播放| 国产www免费| 欧美一区影院| 午夜精品一区二区在线观看的| 久久久久久久久久久久久久久久久久久久 | 亚洲精品xxx| 国产高清视频免费观看| 在线免费观看日韩欧美| 国产第一页第二页| 亚洲啪啪综合av一区二区三区| 日本高清www| 成年人网站91| 无码人妻一区二区三区精品视频 | 96国产粉嫩美女| 福利精品一区| 国产不卡在线观看| 在线中文字幕播放| 久久久久久久网站| 在线电影福利片| 久久亚洲精品网站| 日本综合在线| 最近2019年日本中文免费字幕 | 国产精品午夜电影| 天天躁日日躁aaaa视频| 97久久超碰国产精品电影| 日批免费观看视频| 国产精品系列在线观看| 日本中文字幕二区| 毛片av中文字幕一区二区| 黄色三级视频片| 日韩和欧美的一区| 人妻内射一区二区在线视频| 久久精品亚洲| wwwwww.色| 日韩影院在线观看| 北条麻妃视频在线| 三级影片在线观看欧美日韩一区二区| 各处沟厕大尺度偷拍女厕嘘嘘| 国内精品亚洲| 亚洲国产精品成人av| 欧美老熟妇喷水| 韩国一区二区三区在线观看| 国产精品免费看久久久无码| 午夜性色一区二区三区免费视频| 麻豆一区二区三区在线观看| 欧美激情综合| h无码动漫在线观看| 影音国产精品| 午夜精品久久久久久久无码| 99热免费精品在线观看| 国产二区视频在线播放| 久久久夜精品| a在线观看免费视频| 极品少妇xxxx偷拍精品少妇| 熟妇女人妻丰满少妇中文字幕| 国产成人av在线影院| a级一a一级在线观看| 久久午夜色播影院免费高清| av网站免费在线看| 国产精品美女久久久久高潮| 免费看一级大片| 亚洲国产成人av| 久久国产视频播放| 在线亚洲+欧美+日本专区| 一级黄色免费片| 日韩美女在线视频| 日韩午夜影院| 中文字幕在线观看日韩| 欧美午夜大胆人体| 清纯唯美亚洲综合| 婷婷久久综合九色综合99蜜桃| 亚洲综合国产精品| 网友自拍一区| 正在播放国产精品| 在线欧美视频| 三级a在线观看| 丁香六月久久综合狠狠色| 欧美多人猛交狂配| 亚洲特级片在线| 国产成人自拍视频在线| 欧美日韩精品专区| 人人妻人人澡人人爽人人欧美一区| 亚洲国产精品无码久久| 国产午夜一区二区| 国语对白在线刺激| 国产精品网站大全| 日韩三级视频| 艳母动漫在线观看| 老牛嫩草一区二区三区日本| 男插女视频网站| 久久久久国产精品麻豆| 久热这里只有精品在线| 欧美日韩亚洲国产综合| 视频国产在线观看| 久久久国产91| 欧美特黄aaaaaaaa大片| www.久久久| 日韩欧美视频| 农村妇女精品一二区| 国产麻豆91精品| av手机在线播放| 亚洲v中文字幕| www.天堂在线| 丝袜情趣国产精品| 台湾佬成人网| 国产精品久久久对白| 91麻豆国产自产在线观看亚洲| 国产精品欧美激情在线观看 | 亚洲图片欧美另类| 中文字幕中文乱码欧美一区二区| 日韩精品在线免费视频| 欧美成人三级在线| 欧美日韩在线看片| 国产精品久久不能| 亚洲亚洲免费| 精品久久久久久久久久中文字幕| 国产精品影音先锋| 亚洲综合图片一区| 欧美丝袜丝交足nylons图片| 青青青手机在线视频观看| 久久久久久伊人| 精品国模一区二区三区欧美 | av一区观看| 亚洲综合色网| 欧美激情第3页| 国产情人综合久久777777| 狠狠人妻久久久久久| 日韩精品免费视频| 日本在线高清| 久久国产精品 国产精品| 日韩天天综合| 男人的天堂影院| 五月婷婷综合网| 秋霞网一区二区| 91精品国产91久久久久| 久久精品论坛| 日韩久久一级片| 久久综合国产精品| 亚洲不卡在线视频| 亚洲欧美一区二区三区四区 | 在线观看一区二区视频| 极品白浆推特女神在线观看| 日韩av片免费在线观看| 精品一区在线| 天天影视综合色| 欧美国产一区视频在线观看| 中文字幕视频一区二区| 最新的欧美黄色| 免费一区二区三区在线视频| 国产精品视频网站在线观看| 国产999精品久久久久久绿帽| 麻豆疯狂做受xxxx高潮视频| 亚洲第一福利网| 美女18一级毛片一品久道久久综合| 欧美精品一区二区三区四区五区 | 美女被艹视频网站| 亚洲主播在线播放| 无码精品视频一区二区三区| 日本一区二区在线免费播放| 成人羞羞网站入口免费| 一二三级黄色片| 亚洲国产毛片aaaaa无费看| 亚洲av成人无码网天堂| 国产精品91视频| 欧美成人69| 中文字幕乱码在线| 91国偷自产一区二区使用方法| 99免在线观看免费视频高清| 91精品一区二区| 最新成人av网站| 久久亚洲无码视频| 欧美一区二区三区四区在线观看 | 综合av在线| 美女又爽又黄视频毛茸茸| 欧美色网一区二区| 欧美性猛片xxxxx免费中国 | 国产a级黄色片| 在线观看av一区| 亚洲妇熟xxxx妇色黄| 欧美高清视频一区| 国产在线日韩欧美| 国产午夜在线播放| 日韩亚洲在线观看| 日韩精品丝袜美腿| 九九热免费在线观看| 天天影视色香欲综合网老头| 日本不卡视频| 国产一区二区三区无遮挡| 免费观看一级特黄欧美大片| 国产精品111| 日韩中文第一页| 亚洲日产av中文字幕| 女人扒开腿免费视频app| 91久久奴性调教| 91探花在线观看| 7777在线视频|