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

vue3使用keep?alive實現前進更新后退銷毀

 更新時間:2022年06月01日 15:36:19   作者:殺破狼1914  
這篇文章主要為大家介紹了vue3中使用keep?alive實現前進更新后退銷毀示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

keep alive實現前進更新后退銷毀

想要實現前進更新后退銷毀,核心在操作keep-alive的include。
具體做法就是當進入新頁面時將頁面name保存,再次進入就將它之后的name刪除。

具體實現思路:

正常情況下頁面是線性前進的:

A->B->C->D

include數組數據[A,B,C,D]

當再次進入C,就認為是D返回C

include數組數據[A,B,C]

D頁面就被銷毀了,從而實現了后退銷毀

使用vuex保存include數組

const keep = {
    namespaced: true,
    state: () => {
        return {
            include: [],
        }
    },
    getters: {
        include(state) {
            return state.include
        },
    },
    mutations: {
        add(state, name) {
            let b = false
            let i = 0
            for (; i < state.include.length; ++i) {
                let e = state.include[i]
                if (e == name) {
                    b = true
                    break
                }
            }
            if (!b) {
                state.include.push(name)
            } else {
                state.include.splice(i + 1)
            }
        }
    },
    actions: {
    }
}
export default keep

在beforeEach中添加name

import store from "../store"
router.beforeEach((to, from,next) => {
// 頁面name要和route 的name一樣
  store.commit("keep/add", to.name)
  next()
})

include使用

<template>
  <router-view v-slot="{ Component }">
    <keep-alive :include="includeList">
      <component :is="Component" />
    </keep-alive>
  </router-view>
</template>
<script>
export default {
  computed: {
    includeList() {
      return this.$store.getters["keep/include"].join(",");
    },
  },
};
</script>

當然還有頁面循環(huán)跳轉的情況,一般是詳情頁

A->A->A->A 或A->B->C->A->B->C

這種情況如果不需要保存頁面,就用wacth監(jiān)控$route變化 重新請求接口

如果需要保存頁面,就用動態(tài)路由addRoute添加新的路由

A1->A2->A3->A4

import time from "../views/time"
function copyObj(obj) {
    if (typeof obj == "object") {
        if (Array.isArray(obj)) {
            let arr = [];
            for (let item of obj) {
                arr.push(Object.assign(copyObj(item)));
            }
            return arr;
        } else if (obj == null) {
            return null;
        } else {
            let obj1 = {};
            for (let index in obj) {
                obj1[index] = copyObj((obj[index]));
            }
            return obj1;
        }
    } else if (typeof obj == "function") {
        return Object.assign(obj);
    } else if (typeof obj == undefined) {
        return undefined;
    } else {
        return obj;
    }
}
window.pushTime = function () {
    let t = new Date().getTime();
    let path = `/time/${t}`;
    // 深復制component
    time = copyObj(time)
    // component name要和route 的name一樣
    time.name = path
    this.$router.addRoute({
        path,
        name: path,
        component: time,
    });
    this.$router.push({
        path,
    });
}

vue2用vue-navigation 非常好用

以上就是vue3使用keep alive實現前進更新后退銷毀的詳細內容,更多關于vue3 keep alive更新銷毀的資料請關注腳本之家其它相關文章!

相關文章

  • antd配置config-overrides.js文件的操作

    antd配置config-overrides.js文件的操作

    這篇文章主要介紹了antd配置config-overrides.js文件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Ant?Design?Vue?走馬燈實現單頁多張圖片輪播效果

    Ant?Design?Vue?走馬燈實現單頁多張圖片輪播效果

    這篇文章主要介紹了Ant?Design?Vue?走馬燈實現單頁多張圖片輪播,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Vue.js刷新當前頁面的常見方法

    Vue.js刷新當前頁面的常見方法

    這篇文章主要介紹了Vue.js刷新當前頁面的常見方法,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • Electron + vue 打包桌面操作流程詳解

    Electron + vue 打包桌面操作流程詳解

    這篇文章主要介紹了Electron + vue 打包桌面操作流程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • vue3 setup() 高級用法示例詳解

    vue3 setup() 高級用法示例詳解

    從 vue2 升級到 vue3,vue3 是可以兼容 vue2 的,所以 vue3 可以采用 vue2 的選項式API。這篇文章主要介紹了vue3 setup() 高級用法,需要的朋友可以參考下
    2021-11-11
  • vue組件之間通信實例總結(點贊功能)

    vue組件之間通信實例總結(點贊功能)

    這篇文章主要介紹了vue組件之間通信,結合實例形式分析了vue父子組件、兄弟組件之間通信的原理、實現方法,并給出了一個類似點贊功能的總結實例,需要的朋友可以參考下
    2018-12-12
  • Vue3 openlayers加載瓦片地圖并手動標記坐標點功能

    Vue3 openlayers加載瓦片地圖并手動標記坐標點功能

    這篇文章主要介紹了 Vue3 openlayers加載瓦片地圖并手動標記坐標點功能,我們這里用vue/cli創(chuàng)建,我用的node版本是18.12.1,本文結合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 在vue 中使用 less的教程詳解

    在vue 中使用 less的教程詳解

    這篇文章主要介紹了在vue 中使用 less 的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Vue項目之學生管理系統(tǒng)實例詳解

    Vue項目之學生管理系統(tǒng)實例詳解

    這篇文章主要為大家詳細介紹了Vue項目之學生管理系統(tǒng)實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • vue 中自定義指令改變data中的值

    vue 中自定義指令改變data中的值

    這篇文章主要介紹了vue 中自定義指令改變data中的值,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-06-06

最新評論

遂溪县| 西乌珠穆沁旗| 金阳县| 石渠县| 安溪县| 新乐市| 建德市| 安徽省| 肃宁县| 宁海县| 宜兴市| 连城县| 青冈县| 兴海县| 葵青区| 城口县| 老河口市| 阿克陶县| 武邑县| 襄樊市| 浙江省| 阿坝| 威远县| 连云港市| 基隆市| 临沂市| 客服| 绵阳市| 睢宁县| 安顺市| 尖扎县| 宁武县| 平邑县| 谷城县| 千阳县| 荥经县| 娄底市| 浦县| 柘城县| 河南省| 连城县|