欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3使用keep?alive實現(xiàn)前進(jìn)更新后退銷毀

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

keep alive實現(xiàn)前進(jìn)更新后退銷毀

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

具體實現(xiàn)思路:

正常情況下頁面是線性前進(jìn)的:

A->B->C->D

include數(shù)組數(shù)據(jù)[A,B,C,D]

當(dāng)再次進(jìn)入C,就認(rèn)為是D返回C

include數(shù)組數(shù)據(jù)[A,B,C]

D頁面就被銷毀了,從而實現(xiàn)了后退銷毀

使用vuex保存include數(shù)組

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>

當(dāng)然還有頁面循環(huán)跳轉(zhuǎ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}`;
    // 深復(fù)制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實現(xiàn)前進(jìn)更新后退銷毀的詳細(xì)內(nèi)容,更多關(guān)于vue3 keep alive更新銷毀的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue數(shù)據(jù)劫持詳情介紹

    Vue數(shù)據(jù)劫持詳情介紹

    這篇文章主要介紹了Vue數(shù)據(jù)劫持詳情介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-08-08
  • vue中關(guān)于router.beforeEach()的用法

    vue中關(guān)于router.beforeEach()的用法

    這篇文章主要介紹了vue中關(guān)于router.beforeEach()的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue實現(xiàn)三級導(dǎo)航展示和隱藏

    vue實現(xiàn)三級導(dǎo)航展示和隱藏

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)三級導(dǎo)航展示和隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue 子組件更新props中的屬性值問題

    Vue 子組件更新props中的屬性值問題

    這篇文章主要介紹了Vue 子組件更新props中的屬性值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue實現(xiàn)可復(fù)用輪播組件的方法

    Vue實現(xiàn)可復(fù)用輪播組件的方法

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)可復(fù)用輪播組件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue實現(xiàn)監(jiān)聽dom節(jié)點寬高變化方式

    Vue實現(xiàn)監(jiān)聽dom節(jié)點寬高變化方式

    這篇文章主要介紹了Vue實現(xiàn)監(jiān)聽dom節(jié)點寬高變化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vuex的五大核心詳細(xì)講解

    Vuex的五大核心詳細(xì)講解

    這篇文章主要為大家介紹了vuex的五個核心概念和基本使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-09-09
  • vuex 中插件的編寫案例解析

    vuex 中插件的編寫案例解析

    Vuex 的 store 接受 plugins 選項,這個選項暴露出每次 mutation 的鉤子。Vuex 插件就是一個函數(shù),這篇文章主要介紹了vuex 中插件的編寫案例,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • VUE頁面中加載外部HTML的示例代碼

    VUE頁面中加載外部HTML的示例代碼

    本篇文章主要介紹了VUE頁面中加載外部HTML的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • setTimeout在vue中的正確使用方式

    setTimeout在vue中的正確使用方式

    這篇文章主要介紹了setTimeout在vue中的正確使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論