Vue3 對于內嵌Iframe組件進行緩存

1:應用場景

對于系統內所有內嵌iframe 的頁面均通過同一個路由'/iframe', 在router.query內傳入不同src 參數,在同一組件內顯示iframe 內嵌頁面,對這些頁面分別進行緩存。主要是通過v-show 控制顯示隱藏從而達到iframe 緩存邏輯

2:路由文件配置? router/index.ts

{
? ? ? ? name: 'iframe',
? ? ? ? path: '/iframe',
? ? ? ? component: Iframe,
? ? ? },

?3:修改home.vue 文件

3.1 增加變量判斷是否先死iframe 組件

// 根據路由判斷是否顯示Iframe 組件
? ? const iframeShow = computed(() => route.value?.path.indexOf('/iframe') === 0);

?3.2 在state 中添加響應式數據 wrapperMap, iframeComList

const state = reactive({
? ? ? // 保存相同iframe 組件修改之后的組件名稱同iframe套殼組件的映射關系
? ? ? wrapperMap: new Map(),
? ? ? // wrapperMap 轉換成的數組,循環遍歷生成iframe組件
? ? ? iframeComList: [] as any,
? ? });

3.3??對同一iframe 路由傳入不同參數的組件套殼修改name 進行緩存

const wrap = (name:any, query:any, component:any) => {
? ? ? let wrapper;

? ? ? const wrapperName = name + '-' + query.catchName;
? ? ? if (state.wrapperMap.has(wrapperName)) {
? ? ? ? wrapper = state.wrapperMap.get(wrapperName);
? ? ? } else {
? ? ? ? wrapper = {

? ? ? ? ? name: wrapperName,

? ? ? ? ? render() {
? ? ? ? ? ? return h('div', { className: 'vaf-page-wrapper' }, component);
? ? ? ? ? },

? ? ? ? };

? ? ? ? state.wrapperMap.set(wrapperName, wrapper);
? ? ? }
? ? ? return h(wrapper);
? ? };

?3.4 在template 部分增加 組件通過v-show 控制ifram 路由緩存的組件是否渲染

<!-- :class="{'content-fill':!showAside}" -->
? ? ? ? ? ? <router-view v-if="!iframeShow" />
? ? ? ? ? ? <!-- iframe 組件緩存 -->
? ? ? ? ? ? <div v-show="iframeShow" class="iframe-container">
? ? ? ? ? ? ? <component
? ? ? ? ? ? ? ? :is="h(wrapperMap.get(item[0]))"
? ? ? ? ? ? ? ? v-for="(item) in iframeComList"
? ? ? ? ? ? ? ? v-show="iframeShow && item[0] === (String(route?.name) + '-'+ route.query.VIRTUAL_NAME)"
? ? ? ? ? ? ? ? :key="item[0]"
? ? ? ? ? ? ? />
? ? ? ? ? ? </div>

?3.5 監聽路由

/**
? ? ?* 監聽路由生成新的iframe 組件并保存
? ? ?*/
? ? watch(
? ? ? () => route,
? ? ? (newValue, oldValue) => {

? ? ? ? if (route.value.path.indexOf('/iframe') === 0) {
? ? ? ? ? wrap(route.value.name, route.value.query, h(Iframe));
? ? ? ? ? nextTick(() => {
? ? ? ? ? ? state.iframeComList = [...state.wrapperMap];
? ? ? ? ? });
? ? ? ? }
? ? ? },
? ? ? {
? ? ? ? deep: true,
? ? ? ? immediate: true,
? ? ? },
? ? );

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42274.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42274.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42274.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Github 2024-07-03 C開源項目日報 Top9

根據Github Trendings的統計,今日(2024-07-03統計)共有9個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量C項目9Java項目1Python項目1顯示和控制你的 Android 設備 創建周期:2416 天開發語言:C, Java協議類型:Apache License 2.0Star數量:105222 個…

學IT上培訓班真的有用嗎?

在學習IT技術的過程中&#xff0c;你是否也被安利過各種五花八門的技術培訓班&#xff1f;這些培訓班都是怎樣向你宣傳的&#xff0c;你又對此抱有著怎樣的態度呢&#xff1f;在培訓班里學技術&#xff0c;真的有用嗎&#xff1f; 一、引入話題 IT行業是一個快速發展和不斷變化…

C++初學者指南-4.診斷---未定義行為檢測器

C初學者指南-4.診斷—未定義行為檢測器 未定義行為檢測器(UBSAN) 適用編譯器&#xff1a;clang,g在運行時檢測許多類型的未定義行為 解引用空指針從未對齊的指針讀取整數溢出被0除 … 在代碼中加入額外的指令:在調試構建中增加運行時約25% 示例&#xff1a;有符號整形溢出 …

Git在多人開發中的常見用例

前言 作為從一個 svn 轉過來的 git 前端開發&#xff0c;在經歷過git的各種便捷好處后&#xff0c;想起當時懵懂使用git的膽顫心驚&#xff1a;總是害怕用錯指令&#xff0c;又或者遇到報錯就慌的場景&#xff0c;想起當時查資料一看git指令這么多&#xff0c;看的頭暈眼花&am…

深度學習原理與Pytorch實戰

深度學習原理與Pytorch實戰 第2版 強化學習人工智能神經網絡書籍 python動手學深度學習框架書 TransformerBERT圖神經網絡&#xff1a; 技術講解 編輯推薦 1.基于PyTorch新版本&#xff0c;涵蓋深度學習基礎知識和前沿技術&#xff0c;由淺入深&#xff0c;通俗易懂&#xf…

家里老人能操作的電視直播軟件,目前能用的免費看直播的電視軟件app,適合電視和手機使用!

2024年許多能看電視直播的軟件都不能用了&#xff0c;家里的老人也不會手機投屏&#xff0c;平時什么娛樂都沒有了&#xff0c;這真的太不方便了。 很多老人并不喜歡去買一個廣電的機頂盒&#xff0c;或者花錢拉有線電視。 現在的電視大多數都是智能電視&#xff0c;所以許多電…

Redis基本命令源碼解析-字符串命令

1. set 用于將kv設置到數據庫中 2. mset 批量設置kv mset (msetnx) key1 value1 key2 value2 ... mset:msetCommand msetnx:msetnxCommand msetCommand和msetnxCommand都調用msetGenericCommand 2.1 msetGenericCommand 如果參數個數為偶數,則響應參數錯誤并返回 如果…

【項目日記(一)】夢幻筆耕-數據層實現

?博主主頁: 33的博客? ??文章專欄分類:項目日記?? &#x1f69a;我的代碼倉庫: 33的代碼倉庫&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;關注我帶你了解更多項目內容 目錄 1.前言2.后端模塊3數據庫設計4.mapper實現4.1UserInfoMapper4.2BlogMapper 5.總結 1.…

硬件開發筆記(二十四):貼片電容的類別、封裝介紹,AD21導入貼片電容、原理圖和封裝庫3D模型

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140241817 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV…

存儲結構與管理磁盤

前言&#xff1a;本博客僅作記錄學習使用&#xff0c;部分圖片出自網絡&#xff0c;如有侵犯您的權益&#xff0c;請聯系刪除 目錄 一、一切從“/”開始 二、物理設備的命名規則 三、文件系統與數據資料 四、掛載硬件設備 五、添加硬盤設備 六、添加交換分區 七、磁盤容…

如何在 PostgreSQL 中實現數據的增量備份和恢復?

文章目錄 一、增量備份的原理二、準備工作&#xff08;一&#xff09;環境配置&#xff08;二&#xff09;創建測試數據庫和表&#xff08;三&#xff09;插入初始數據 三、全量備份四、基于時間點的增量備份&#xff08;一&#xff09;開啟 WAL 歸檔&#xff08;二&#xff09…

政策公告與提醒

自 2024 年 4 月 3 日起,您將至少有 30 天的時間來更新應用,使其符合下方所述的政策變更。 我們將推出“兒童安全標準”政策,規定社交應用和約會交友應用必須遵循特定標準,并在 Play 管理中心內以自行認證的形式證明合規后才能發布。 為了提高健康相關應用在 Google Play…

docker 重要且常用命令大全

本文將總結一些常見的重要的docker命令&#xff0c;以作備忘。后續如果有新的比較常用重要的也會更新進來。歡迎補充。 docker服務管理 首先我們要解釋一下&#xff1a;systemctl和docker命令的不同 systemctl&#xff1a;是許多 Linux 發行版中默認的初始化系統和服務管理器。…

【ARMv8/v9 GIC 系列 5.4 -- 中斷分組與安全及優先級配置】

請閱讀【ARM GICv3/v4 實戰學習 】 文章目錄 Interrupt grouping and securityGICD_CTRL.DS 為0GICD_CTRL.DS 為 1中斷組優先級配置Common Binary Point Register中斷優先級與二進制點Common Binary Point RegisterInterrupt grouping and security ARM架構提供了兩種安全狀態…

11.常見的Bean后置處理器

CommonAnnotationBeanPostProcessor (Resource PostConstructor PreDestroy) AutowiredAnnotationBeanPostProcessor (Autowired Value) GenericApplicationContext是一個干凈的容器&#xff0c;它沒有添加任何的PostProcessor處理器。 調用GenericApplicationContext.refre…

賽元單片機開發工具SOC_Programming_Tool_Enhance_V1.50 分享

下載地址&#xff1a; SOC_Programming_Tool_Enhance_V1.50(LIB0D30).rar: https://545c.com/f/45573183-1320016694-557ebd?p7526 (訪問密碼: 7526)

docker中實現多機redis主從集群

redis主從集群是每個使用redis的小伙伴都必需知道的&#xff0c;那如何在docker中快速配置呢&#xff1f;這篇來教你快速上手&#xff0c;跟著復制完全就能用&#xff01;&#xff01; 1. 前置準備 1.1 docker安裝 以防有小伙伴沒預先安裝docker&#xff0c;這里提供安裝步驟…

視頻共享融合賦能平臺LnyonCVS國標視頻監控平臺包含哪些功能

隨著國內視頻監控應用的迅猛發展&#xff0c;系統接入規模不斷擴大。不同平臺提供商的接入協議各不相同&#xff0c;導致終端制造商在終端維護時需要針對不同平臺的軟件版本提供不同的維護&#xff0c;資源造成了極大的浪費。 為響應國家對重特大事件通過視頻監控集中調閱來掌…

QListWidget 縮略圖IconMode示例

1、實現的效果如下&#xff1a; 2、實現代碼 &#xff08;1&#xff09;頭文件 #pragma once #include <QtWidgets/QMainWindow> #include "ui_QListViewDemo.h" enum ListDataType { ldtNone -1, ldtOne 0, ldtTwo 1, }; struct ListData…

網絡協議與標準

協議&#xff1a; 語法 &#xff1b;計算機的算法&#xff0c;二進制 語義 &#xff1b;不要有出現歧義的 同步 &#xff1b; 同步還原信息&#xff0c;收發同步 標準&#xff1a; ISO&#xff08;國際標準化組織&#xff09; IEEE(電氣和電子工程師學會) 局域網技術 一.協議…