最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3如何對內(nèi)嵌Iframe組件進行緩存

 更新時間:2025年04月25日 09:00:46   投稿:jingxian  
這篇文章主要介紹了Vue3如何對內(nèi)嵌Iframe組件進行緩存問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1:應用場景

對于系統(tǒng)內(nèi)所有內(nèi)嵌iframe 的頁面均通過同一個路由'/iframe', 在router.query內(nèi)傳入不同src 參數(shù),在同一組件內(nèi)顯示iframe 內(nèi)嵌頁面,對這些頁面分別進行緩存。

主要是通過v-show 控制顯示隱藏從而達到iframe 緩存邏輯

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

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

3:修改home.vue 文件

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

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

3.2 在state 中添加響應式數(shù)據(jù)

wrapperMap, iframeComList

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

3.3 對同一iframe

路由傳入不同參數(shù)的組件套殼修改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 監(jiān)聽路由

/**
* 監(jiān)聽路由生成新的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,
},
);

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 解決vue項目中出現(xiàn)Invalid Host header的問題

    解決vue項目中出現(xiàn)Invalid Host header的問題

    這篇文章主要介紹了解決vue項目中出現(xiàn)"Invalid Host header"的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 分離vue文件中css、js代碼的簡單技巧

    分離vue文件中css、js代碼的簡單技巧

    這篇文章主要給大家介紹了關于分離vue文件中css、js代碼的簡單技巧,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • vue 表單之通過v-model綁定單選按鈕radio

    vue 表單之通過v-model綁定單選按鈕radio

    這篇文章主要介紹了vue 表單之v-model綁定單選按鈕radio的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue-router子路由的實現(xiàn)方式

    vue-router子路由的實現(xiàn)方式

    這篇文章主要介紹了vue-router子路由的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Vue3.0插件執(zhí)行原理與實戰(zhàn)

    Vue3.0插件執(zhí)行原理與實戰(zhàn)

    這篇文章主要介紹了Vue3.0插件執(zhí)行原理與實戰(zhàn),Vue項目能夠使用很多插件來豐富自己的功能Vue-Router、Vuex等,節(jié)省了我們大量的人力和物力,下面我們就一起來了解Vue3.0插件的原理吧,需要的小伙伴可以參考一下
    2022-02-02
  • vue下跨域設置的相關介紹

    vue下跨域設置的相關介紹

    本篇文章主要介紹了vue下跨域設置的相關介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue中引入bootstrap.min.css的正確姿勢分享

    Vue中引入bootstrap.min.css的正確姿勢分享

    這篇文章主要介紹了Vue中引入bootstrap.min.css的正確姿勢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 精讀《Vue3.0 Function API》

    精讀《Vue3.0 Function API》

    這篇文章主要介紹了精讀《Vue3.0 Function API》,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Vue+webpack項目基礎配置教程

    Vue+webpack項目基礎配置教程

    這篇文章主要介紹了Vue+webpack項目基礎配置教程,需要的朋友可以參考下
    2018-02-02
  • vue實現(xiàn)簡單的日歷效果

    vue實現(xiàn)簡單的日歷效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)簡單的日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論

灵璧县| 邻水| 浦江县| 堆龙德庆县| 临沭县| 武安市| 怀化市| 澜沧| 家居| 汝南县| 新龙县| 湘西| 星子县| 哈巴河县| 新津县| 专栏| 青铜峡市| 通城县| 阳江市| 重庆市| 兴隆县| 上杭县| 定兴县| 赞皇县| 绵阳市| 乡城县| 公安县| 连山| 修文县| 福清市| 沧州市| 东莞市| 乐清市| 突泉县| 济阳县| 博野县| 祁东县| 山阴县| 万盛区| 巧家县| 宁夏|