Heim > Web-Frontend > View.js > Hauptteil

Wie vue3 Keep Alive verwendet, um eine Vorwärtsaktualisierung und eine Rückwärtszerstörung zu erreichen

PHPz
Freigeben: 2023-05-23 20:19:19
nach vorne
1949 Leute haben es durchsucht

Keep Alive implementiert Vorwärtsaktualisierung und Rückwärtszerstörung

Wenn Sie Vorwärtsaktualisierung und Rückwärtszerstörung realisieren möchten, besteht der Kern darin, die Keep-Alive-Einbindung zu bedienen.
Die spezifische Methode besteht darin, den Seitennamen beim Aufrufen einer neuen Seite zu speichern und den Namen danach beim erneuten Aufrufen zu löschen.

Spezifische Implementierungsideen:

Unter normalen Umständen schreitet die Seite linear voran:

A->B->C->D

Array-Daten einschließen [A,B,C,D]

Wenn noch einmal Wenn Sie C eingeben, wird davon ausgegangen, dass D zu C zurückkehrt

Array-Daten [A, B, C] einschließen

D-Seite wird zerstört, wodurch eine Rückwärtszerstörung erreicht wird

Verwenden Sie vuex, um das Include-Array zu speichern
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
Nach dem Login kopieren
Fügen Sie den Namen in beforeEach hinzu
import store from "../store"
router.beforeEach((to, from,next) => {
// 页面name要和route 的name一样
  store.commit("keep/add", to.name)
  next()
})
Nach dem Login kopieren
include verwendet
<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>
Nach dem Login kopieren

Natürlich gibt es auch Seitenschleifensprünge, meist wird die Detailseite

A->A->A->A oder A->B->C-> A->B->C

Wenn Sie in diesem Fall die Seite nicht speichern müssen, verwenden Sie wacth, um $route-Änderungen zu überwachen und die Schnittstelle erneut anzufordern.

Wenn Sie die Seite speichern müssen, verwenden Sie dynamisches Routing addRoute zum Hinzufügen einer neuen Route

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,
    });
}
Nach dem Login kopieren

vue2 ist mit Vue-Navigation sehr einfach zu verwenden

Das obige ist der detaillierte Inhalt vonWie vue3 Keep Alive verwendet, um eine Vorwärtsaktualisierung und eine Rückwärtszerstörung zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage