Pure admin-Router标签页配置与页面持久化实现方法详解

 更新时间:2023年01月19日 08:54:20   作者:fanction  
这篇文章主要介绍了Pure admin-Router标签页配置与页面持久化实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

页面持久化(适用与单个页面,跳转页面不适用):

步骤一:添加 keepAlive: true

{
      path: "/lucky/lookLucky",
      name: "lookLucky",
      component: () => import("@/views/lucky/lookLucky/index.vue"),
      meta: {
        title: $t("查看幸运活动"),
        showLink: false,
        keepAlive: true   // 添加 keepAlive: true   
      }
    }

步骤二:在需要持久化的页面使用defineOptions选择当前页,name的名字就是当前页的路由名

defineOptions({
  name: "lookLucky"
});

页面跳转传参以及持久化-标签页名称配置

某些情况下,做标签页跳转时需要将当前页的某条信息的名称或者是状态携带到跳转页目标页,并且目标页刷新后数据还是存在,这就需要做页面的持久化以及hooks配置。

步骤一:先在路由页配置路由

{
      path: "/lucky/luckyEvent/EditBag",
      name: "EditBagEvent",
      component: () =>
        import("@/views/lucky/luckyEvent/EditBag/index.vue"),
      meta: {
        title: $t("幸运活动编辑"),
        showLink: false,  // 不在左侧菜单显示
      }
    }

步骤二:新增一个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 ,就是跳转页传入的,传入的参数需要一一对应
  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 ,就是跳转页传入的,传入的参数需要一一对应
    createStatus: number | string | string[] | number[] | null,
    model: string,
    id?: number | string | string[] | number[] | null
  ) {
    if (model === "query") {
      // 保存信息到标签页
      useMultiTagsStoreHook().handleTags("push", {
          // 跳转目标页的路由
        path: `/lucky/luckyEvent/EditBag`,
        name: "EditBagEvent",   // 跳转目标页的路由名
        query: { id: String(id), createStatus: String(createStatus) },   // 跳转目标页的参数
        meta: {
          title: {
            zh: `${createStatus == 1 ? "添加" : "修改"}福袋活动`,  // 可以动态修改标签页名称
            en: `${createStatus == 1 ? "添加" : "修改"}福袋活动`   // 可以动态修改标签页名称
          },
          // 最大打开标签数
          dynamicLevel: 1
        }
      });
      // 路由跳转,EditBagEvent 携带参数
      router.push({
        name: "EditBagEvent",
        query: { id: String(id), createStatus: String(createStatus) }
      });
    }
  }
  function initToDetail(model) {
    onBeforeMount(() => {
        // 这里的id、createStatus ,就是跳转页传入的,传入的参数需要一一对应
      if (id) toDetail(createStatus as string, model, id as string);
    });
  }
  return { toDetail, initToDetail, id, createStatus, router };  // 导出参数,跳转目标页可以获取到
}

当前页

// 引入hooks文件
import { useDetail } from "./hooks";
// 当前页的路由名
defineOptions({
  name: "luckyBagEvent"
});
const { toDetail } = useDetail();
// 添加
const createStatus = ref(0); // 0修改 1创建
const addBagEvent = () => {   // 点击事件,也可以直接写在HTML标签上
  createStatus.value = 1;
  toDetail(createStatus.value, "query");  // 跳转(参数,query模式)
};

跳转目标页

// 引入 hooks
import { useDetail } from "../hooks";
// 设置当前页的路由名
defineOptions({
  name: "EditBag"
});
// 获取路由参数以及方法
const { initToDetail, id, createStatus, router } = useDetail();
initToDetail("query");  // query传参方式
// 这里的initToDetail为回传的路由,用作路由的参数缓存以及页面持久

关闭标签页

import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
import { useDetail } from "../hooks";
const { router } = useDetail();
router.push("/luckyModul/luckyBag"); // 路由跳转
// 关闭标签页,router.currentRoute.value.path就是需要关闭的路由,固定写法,不要动
useMultiTagsStoreHook().handleTags("splice", router.currentRoute.value.path);

需要注意

如果配置了hooks的同时还配置了keepAlive: true,那么页面修改了之后,数据会持久保存,所以下次进入页面时还是当前状态,例如:数据清空,如果开启了keepAlive,当前页数据清空了,下次跳转进入时,还是清空的状态,不会重新刷新,如果需要重新刷新,需要关闭keepAlive。

到此这篇关于Pure admin-Router标签页配置与页面持久化实现方法详解的文章就介绍到这了,更多相关Pure admin-Router标签页配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用vue-print-nb打印el-table问题总结

    使用vue-print-nb打印el-table问题总结

    这篇文章主要介绍了使用vue-print-nb打印el-table问题总结,通过实例代码介绍了vue-print-nb 打印功能,本文结合实例代码讲解的非常详细,感兴趣的朋友一起看看吧
    2024-01-01
  • webpack 3 + Vue2 使用dotenv配置多环境的步骤

    webpack 3 + Vue2 使用dotenv配置多环境的步骤

    这篇文章主要介绍了webpack 3 + Vue2 使用dotenv配置多环境,env文件在配置文件都可以用, vue页面用的时候需要在 webpack.base.conf.js 重新配置,需要的朋友可以参考下
    2023-11-11
  • 详解vue中的动态组件component和keep-alive

    详解vue中的动态组件component和keep-alive

    这篇文章主要介绍了详解vue中的动态组件component和keep-alive的相关资料,这大家需要注意include属性和exclude属性只能用一个,不能同时使用,本文给大家介绍的非常详细,需要的朋友参考下吧
    2023-11-11
  • 详解Vue 单文件组件的三种写法

    详解Vue 单文件组件的三种写法

    这篇文章主要介绍了详解Vue 单文件组件的三种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 使用async-validator编写Form组件的方法

    使用async-validator编写Form组件的方法

    本篇文章主要介绍了使用 async-validator 编写 Form 组件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 使用vue-video-player实现直播的方式

    使用vue-video-player实现直播的方式

    在开发期间使用过video.js、mui-player等插件,发现这些video插件对移动端的兼容性都不友好,最后发现一个在移动端兼容不错的插件vue-video-player,下面通过场景分析给大家介绍使用vue-video-player实现直播的方法,感兴趣的朋友一起看看吧
    2022-01-01
  • 深入解析Vue的自定义指令

    深入解析Vue的自定义指令

    这篇文章主要介绍了深入解析Vue的自定义指令,自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑,一个自定义指令由一个包含类似组件生命周期钩子的对象来定义,需要的朋友可以参考下
    2023-05-05
  • 在vue中使用vant TreeSelect分类选择组件操作

    在vue中使用vant TreeSelect分类选择组件操作

    这篇文章主要介绍了在vue中使用vant TreeSelect分类选择组件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vue路由传参及props解耦深入分析

    Vue路由传参及props解耦深入分析

    vue路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带参数跳转,下面这篇文章主要给大家介绍了关于vue路由传参方式的方式总结及获取参数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • vue实现轮播图帧率播放

    vue实现轮播图帧率播放

    这篇文章主要为大家详细介绍了vue实现轮播图帧率播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01

最新评论