Vue3 Element Plus el-tabs數(shù)據(jù)刷新實現(xiàn)方式
更新時間:2025年07月30日 09:13:04 作者:滿
這篇文章主要介紹了Vue3 Element Plus el-tabs數(shù)據(jù)刷新實現(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ù)完全獨立的情況 keep-alive
+activated
適合需要保留組件狀態(tài)但刷新數(shù)據(jù)的情況- 對于簡單場景,直接使用
@tab-change
事件即可
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue3中導入和使用圖標庫Font Awesome的實現(xiàn)步驟
Font Awesome 是互聯(lián)網(wǎng)的圖標庫和工具包,被數(shù)百萬設計師、開發(fā)人員和內(nèi)容創(chuàng)建者使用,Font Awesome的圖標非常豐富,基本涵蓋你所需要的所有,本文給大家介紹了Vue3中導入和使用圖標庫Font Awesome的具體步驟,需要的朋友可以參考下2025-01-01Vue中使用matomo進行訪問流量統(tǒng)計的實現(xiàn)
這篇文章主要介紹了Vue中使用matomo進行訪問流量統(tǒng)計的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11VuePress整合Toast消息提示的實現(xiàn)步驟
本文主要介紹了VuePress整合Toast消息提示的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-06-06