Vue3 Element Plus el-tabs數(shù)據(jù)刷新實(shí)現(xiàn)方式
更新時間:2025年07月30日 09:13:04 作者:滿
這篇文章主要介紹了Vue3 Element Plus el-tabs數(shù)據(jù)刷新實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
方法1: 使用@tab-change事件
<template>
<el-tabs v-model="activeTab" @tab-change="handleTabChange">
<el-tab-pane label="Tab 1" name="tab1">
<div v-if="activeTab === 'tab1'">
<!-- 內(nèi)容1 -->
{{ tab1Data }}
</div>
</el-tab-pane>
<el-tab-pane label="Tab 2" name="tab2">
<div v-if="activeTab === 'tab2'">
<!-- 內(nèi)容2 -->
{{ tab2Data }}
</div>
</el-tab-pane>
</el-tabs>
</template>
<script setup>
import { ref } from 'vue';
const activeTab = ref('tab1');
const tab1Data = ref(null);
const tab2Data = ref(null);
const handleTabChange = (tabName) => {
if (tabName === 'tab1') {
fetchTab1Data();
} else if (tabName === 'tab2') {
fetchTab2Data();
}
};
const fetchTab1Data = async () => {
// 模擬API請求
tab1Data.value = await new Promise(resolve => {
setTimeout(() => resolve('Tab 1 數(shù)據(jù)已刷新'), 500);
});
};
const fetchTab2Data = async () => {
// 模擬API請求
tab2Data.value = await new Promise(resolve => {
setTimeout(() => resolve('Tab 2 數(shù)據(jù)已刷新'), 500);
});
};
// 初始化加載第一個tab的數(shù)據(jù)
fetchTab1Data();
</script>方法2: 使用v-if控制內(nèi)容渲染
<template>
<el-tabs v-model="activeTab">
<el-tab-pane label="Tab 1" name="tab1">
<Tab1Content v-if="activeTab === 'tab1'" />
</el-tab-pane>
<el-tab-pane label="Tab 2" name="tab2">
<Tab2Content v-if="activeTab === 'tab2'" />
</el-tab-pane>
</el-tabs>
</template>
<script setup>
import { ref } from 'vue';
import Tab1Content from './Tab1Content.vue';
import Tab2Content from './Tab2Content.vue';
const activeTab = ref('tab1');
</script>在子組件中使用 onMounted 鉤子加載數(shù)據(jù):
<!-- Tab1Content.vue -->
<script setup>
import { onMounted, ref } from 'vue';
const data = ref(null);
onMounted(async () => {
// 加載數(shù)據(jù)
data.value = await fetchData();
});
</script>方法3: 使用keep-alive和activated鉤子
如果需要緩存組件但依然在切換時刷新數(shù)據(jù):
<template>
<el-tabs v-model="activeTab">
<el-tab-pane label="Tab 1" name="tab1">
<keep-alive>
<Tab1Content v-if="activeTab === 'tab1'" />
</keep-alive>
</el-tab-pane>
<el-tab-pane label="Tab 2" name="tab2">
<keep-alive>
<Tab2Content v-if="activeTab === 'tab2'" />
</keep-alive>
</el-tab-pane>
</el-tabs>
</template>在子組件中使用 activated 鉤子:
<!-- Tab1Content.vue -->
<script setup>
import { ref, activated } from 'vue';
const data = ref(null);
const loadData = async () => {
data.value = await fetchData();
};
// 組件激活時加載數(shù)據(jù)
activated(() => {
loadData();
});
// 初始加載
loadData();
</script>注意事項
- 使用
v-if會完全銷毀和重建組件,適合數(shù)據(jù)完全獨(dú)立的情況 keep-alive+activated適合需要保留組件狀態(tài)但刷新數(shù)據(jù)的情況- 對于簡單場景,直接使用
@tab-change事件即可
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3中導(dǎo)入和使用圖標(biāo)庫Font Awesome的實(shí)現(xiàn)步驟
Font Awesome 是互聯(lián)網(wǎng)的圖標(biāo)庫和工具包,被數(shù)百萬設(shè)計師、開發(fā)人員和內(nèi)容創(chuàng)建者使用,Font Awesome的圖標(biāo)非常豐富,基本涵蓋你所需要的所有,本文給大家介紹了Vue3中導(dǎo)入和使用圖標(biāo)庫Font Awesome的具體步驟,需要的朋友可以參考下2025-01-01
Vue中使用matomo進(jìn)行訪問流量統(tǒng)計的實(shí)現(xiàn)
這篇文章主要介紹了Vue中使用matomo進(jìn)行訪問流量統(tǒng)計的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
VuePress整合Toast消息提示的實(shí)現(xiàn)步驟
本文主要介紹了VuePress整合Toast消息提示的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-06-06

