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

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

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

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

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

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

正常情況下頁(yè)面是線性前進(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頁(yè)面就被銷毀了,從而實(shí)現(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) => {
// 頁(yè)面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)然還有頁(yè)面循環(huán)跳轉(zhuǎn)的情況,一般是詳情頁(yè)

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

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

如果需要保存頁(yè)面,就用動(dòng)態(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實(shí)現(xiàn)前進(jìn)更新后退銷毀的詳細(xì)內(nèi)容,更多關(guān)于vue3 keep alive更新銷毀的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    Ant?Design?Vue?走馬燈實(shí)現(xiàn)單頁(yè)多張圖片輪播效果

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

    Vue.js刷新當(dāng)前頁(yè)面的常見方法

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

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

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

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

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

    vue組件之間通信實(shí)例總結(jié)(點(diǎn)贊功能)

    這篇文章主要介紹了vue組件之間通信,結(jié)合實(shí)例形式分析了vue父子組件、兄弟組件之間通信的原理、實(shí)現(xiàn)方法,并給出了一個(gè)類似點(diǎn)贊功能的總結(jié)實(shí)例,需要的朋友可以參考下
    2018-12-12
  • Vue3 openlayers加載瓦片地圖并手動(dòng)標(biāo)記坐標(biāo)點(diǎn)功能

    Vue3 openlayers加載瓦片地圖并手動(dòng)標(biāo)記坐標(biāo)點(diǎn)功能

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

    在vue 中使用 less的教程詳解

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

    Vue項(xiàng)目之學(xué)生管理系統(tǒng)實(shí)例詳解

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

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

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

最新評(píng)論

乐亭县| 乌鲁木齐市| 嵊泗县| 成都市| 连平县| 乌兰察布市| 黄梅县| 利津县| 嫩江县| 博野县| 通化市| 时尚| 咸阳市| 曲水县| 驻马店市| 东光县| 丁青县| 佳木斯市| 涿州市| 民权县| 邻水| 长岛县| 康定县| 房产| 淮南市| 兴城市| 宁乡县| 阿拉尔市| 黎平县| 仁寿县| 新密市| 凤庆县| 临沧市| 绥德县| 涞水县| 五寨县| 鹿邑县| 荔浦县| 临澧县| 耒阳市| 肥城市|