Pure admin-Router標(biāo)簽頁配置與頁面持久化實(shí)現(xiàn)方法詳解
頁面持久化(適用與單個(gè)頁面,跳轉(zhuǎn)頁面不適用):
步驟一:添加 keepAlive: true
{ path: "/lucky/lookLucky", name: "lookLucky", component: () => import("@/views/lucky/lookLucky/index.vue"), meta: { title: $t("查看幸運(yùn)活動(dòng)"), showLink: false, keepAlive: true // 添加 keepAlive: true } }
步驟二:在需要持久化的頁面使用defineOptions
選擇當(dāng)前頁,name
的名字就是當(dāng)前頁的路由名
defineOptions({ name: "lookLucky" });
頁面跳轉(zhuǎn)傳參以及持久化-標(biāo)簽頁名稱配置
某些情況下,做標(biāo)簽頁跳轉(zhuǎn)時(shí)需要將當(dāng)前頁的某條信息的名稱或者是狀態(tài)攜帶到跳轉(zhuǎn)頁目標(biāo)頁,并且目標(biāo)頁刷新后數(shù)據(jù)還是存在,這就需要做頁面的持久化以及hooks配置。
步驟一:先在路由頁配置路由
{ path: "/lucky/luckyEvent/EditBag", name: "EditBagEvent", component: () => import("@/views/lucky/luckyEvent/EditBag/index.vue"), meta: { title: $t("幸運(yùn)活動(dòng)編輯"), showLink: false, // 不在左側(cè)菜單顯示 } }
步驟二:新增一個(gè)hooks.ts文件
import { useMultiTagsStoreHook } from "@/store/modules/multiTags"; import { useRouter, useRoute } from "vue-router"; import { onBeforeMount } from "vue"; export function useDetail() { const route = useRoute(); const router = useRouter(); // 這里的id、createStatus ,就是跳轉(zhuǎn)頁傳入的,傳入的參數(shù)需要一一對(duì)應(yīng) const id = route.query?.id ? route.query?.id : route.params?.id; const createStatus = route.query?.createStatus ? route.query?.createStatus : route.params?.createStatus; function toDetail( // 這里的id、createStatus ,就是跳轉(zhuǎn)頁傳入的,傳入的參數(shù)需要一一對(duì)應(yīng) createStatus: number | string | string[] | number[] | null, model: string, id?: number | string | string[] | number[] | null ) { if (model === "query") { // 保存信息到標(biāo)簽頁 useMultiTagsStoreHook().handleTags("push", { // 跳轉(zhuǎn)目標(biāo)頁的路由 path: `/lucky/luckyEvent/EditBag`, name: "EditBagEvent", // 跳轉(zhuǎn)目標(biāo)頁的路由名 query: { id: String(id), createStatus: String(createStatus) }, // 跳轉(zhuǎn)目標(biāo)頁的參數(shù) meta: { title: { zh: `${createStatus == 1 ? "添加" : "修改"}福袋活動(dòng)`, // 可以動(dòng)態(tài)修改標(biāo)簽頁名稱 en: `${createStatus == 1 ? "添加" : "修改"}福袋活動(dòng)` // 可以動(dòng)態(tài)修改標(biāo)簽頁名稱 }, // 最大打開標(biāo)簽數(shù) dynamicLevel: 1 } }); // 路由跳轉(zhuǎn),EditBagEvent 攜帶參數(shù) router.push({ name: "EditBagEvent", query: { id: String(id), createStatus: String(createStatus) } }); } } function initToDetail(model) { onBeforeMount(() => { // 這里的id、createStatus ,就是跳轉(zhuǎn)頁傳入的,傳入的參數(shù)需要一一對(duì)應(yīng) if (id) toDetail(createStatus as string, model, id as string); }); } return { toDetail, initToDetail, id, createStatus, router }; // 導(dǎo)出參數(shù),跳轉(zhuǎn)目標(biāo)頁可以獲取到 }
當(dāng)前頁
// 引入hooks文件 import { useDetail } from "./hooks"; // 當(dāng)前頁的路由名 defineOptions({ name: "luckyBagEvent" }); const { toDetail } = useDetail(); // 添加 const createStatus = ref(0); // 0修改 1創(chuàng)建 const addBagEvent = () => { // 點(diǎn)擊事件,也可以直接寫在HTML標(biāo)簽上 createStatus.value = 1; toDetail(createStatus.value, "query"); // 跳轉(zhuǎn)(參數(shù),query模式) };
跳轉(zhuǎn)目標(biāo)頁
// 引入 hooks import { useDetail } from "../hooks"; // 設(shè)置當(dāng)前頁的路由名 defineOptions({ name: "EditBag" }); // 獲取路由參數(shù)以及方法 const { initToDetail, id, createStatus, router } = useDetail(); initToDetail("query"); // query傳參方式 // 這里的initToDetail為回傳的路由,用作路由的參數(shù)緩存以及頁面持久
關(guān)閉標(biāo)簽頁
import { useMultiTagsStoreHook } from "@/store/modules/multiTags"; import { useDetail } from "../hooks"; const { router } = useDetail(); router.push("/luckyModul/luckyBag"); // 路由跳轉(zhuǎn) // 關(guān)閉標(biāo)簽頁,router.currentRoute.value.path就是需要關(guān)閉的路由,固定寫法,不要?jiǎng)? useMultiTagsStoreHook().handleTags("splice", router.currentRoute.value.path);
需要注意
如果配置了hooks的同時(shí)還配置了keepAlive: true,那么頁面修改了之后,數(shù)據(jù)會(huì)持久保存,所以下次進(jìn)入頁面時(shí)還是當(dāng)前狀態(tài),例如:數(shù)據(jù)清空,如果開啟了keepAlive,當(dāng)前頁數(shù)據(jù)清空了,下次跳轉(zhuǎn)進(jìn)入時(shí),還是清空的狀態(tài),不會(huì)重新刷新,如果需要重新刷新,需要關(guān)閉keepAlive。
到此這篇關(guān)于Pure admin-Router標(biāo)簽頁配置與頁面持久化實(shí)現(xiàn)方法詳解的文章就介紹到這了,更多相關(guān)Pure admin-Router標(biāo)簽頁配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Vue axios post請(qǐng)求,后臺(tái)獲取不到數(shù)據(jù)的問題方法
今天小編就為大家分享一篇解決Vue axios post請(qǐng)求,后臺(tái)獲取不到數(shù)據(jù)的問題方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08vue3利用v-model實(shí)現(xiàn)父子組件之間數(shù)據(jù)同步的代碼詳解
在Vue 3中,v-model這一指令也得到了升級(jí),使得父子組件之間的數(shù)據(jù)同步變得更加容易和靈活,本文將探討一下Vue 3中如何利用v-model來實(shí)現(xiàn)父子組件之間的數(shù)據(jù)同步,需要的朋友可以參考下2024-03-03詳解vite2.0配置學(xué)習(xí)(typescript版本)
這篇文章主要介紹了詳解vite2.0配置學(xué)習(xí)(typescript版本),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02vue實(shí)現(xiàn)html轉(zhuǎn)化pdf并復(fù)制文字
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)html轉(zhuǎn)化pdf的兩種方式,分別為能復(fù)制文字和不能復(fù)制文字的方法,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10vue?頂部消息橫向滾動(dòng)通知效果實(shí)現(xiàn)
系統(tǒng)頂部展示一個(gè)橫向滾動(dòng)的消息通知,就是消息內(nèi)容從右往左一直滾動(dòng),這篇文章主要介紹了vue頂部消息橫向滾動(dòng)通知,需要的朋友可以參考下2024-02-02