Rumah > hujung hadapan web > View.js > Cara vue3 menggunakan kekal hidup untuk mencapai kemas kini ke hadapan dan kemusnahan ke belakang

Cara vue3 menggunakan kekal hidup untuk mencapai kemas kini ke hadapan dan kemusnahan ke belakang

PHPz
Lepaskan: 2023-05-23 20:19:19
ke hadapan
1956 orang telah melayarinya

Keep alive melaksanakan kemas kini ke hadapan dan kemusnahan ke belakang

Jika anda ingin merealisasikan kemas kini ke hadapan dan kemusnahan ke belakang, terasnya adalah untuk mengendalikan termasuk keep-alive.
Kaedah khusus adalah untuk menyimpan nama halaman apabila memasuki halaman baharu, dan memadamkan nama selepasnya apabila memasuki semula.

Idea pelaksanaan khusus:

Dalam keadaan biasa, halaman maju secara linear:

A->B->C->D

sertakan data tatasusunan [A,B,C,D]

Apabila memasukkan C sekali lagi, adalah dianggap bahawa D kembali ke C

termasuk data tatasusunan [A,B,C]

Halaman D dimusnahkan, sekali gus mencapai kemusnahan mundur

Gunakan vuex untuk menyimpan tatasusunan sertakan
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
Salin selepas log masuk
Tambah nama
import store from "../store"
router.beforeEach((to, from,next) => {
// 页面name要和route 的name一样
  store.commit("keep/add", to.name)
  next()
})
Salin selepas log masuk
masukkan dalam beforeEach dan gunakan
<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>
Salin selepas log masuk

Sudah tentu, terdapat juga lompatan gelung halaman, biasanya halaman butiran

A->A->A->A atau A->B->C-> A- >B->C

Dalam kes ini, jika anda tidak perlu menyimpan halaman, gunakan wacth untuk memantau perubahan $route dan minta semula antara muka

Jika anda perlu menyimpan halaman, gunakan penghalaan dinamik addRoute untuk menambah yang baharu Penghalaan

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,
    });
}
Salin selepas log masuk

vue2 menggunakan navigasi vue yang sangat mudah digunakan

Atas ialah kandungan terperinci Cara vue3 menggunakan kekal hidup untuk mencapai kemas kini ke hadapan dan kemusnahan ke belakang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan