【vue3如何实时显示当前页面名称】

  • 问题:当我想做一个实时的面包屑时,如果根据根据路由的跳转而更新面包屑
  • 技术:pinia+vue-router

1.        使用pinia创建一个共用状态:navTitle

//  /store/setting.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const settingStore = defineStore('setting', () => {
  //存储navTitle
  const navTitle :any= ref('')
  //用于匹配
  const titleMap: any = {
    Home: "主页",
    home: "主页",
    "data-login": "登录",
    "data-error": "错误页面",
    "data-404": "404页面",
    "data-500": "500页面",
  };
  const setNavTitle= (routeName: string) => {
    navTitle.value = titleMap[routeName] || "未知页面";
  }
  return { navTitle, setNavTitle }
}, {
  persist: true
})

2.        确保main.ts中注册pinia

import { createApp } from "vue";
const pinia = createPinia()
const app = createApp(App);
app.use(pinia)
app.mount("#app");

3.         使用路由导航守卫进行监听路由变化

// /router/index.ts
import {createRouter, createWebHistory} from 'vue-router'
import { settingStore } from '@/store/setting

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      name: 'Home',
      redirect: '/home',
      component: () => import('@/components/layouts/LayoutView.vue'),
      children: [
        {
          path: '/home',
          name: 'home',
          component: () => import('@/views/HomeView/index.vue')  
        },
      ]
    },
    {
      path: '/login',
      name: 'Login',
      component: () => import('@/views/LoginView/index.vue')
    },
    
  ]
})
router.beforeEach((to:any, from, next) => {
  if (to.name !== 'Login') {
    //设置navTitle的值
    const navTitle = settingStore();
    navTitle.setNavTitle(to.name);
    console.log(to.name);
  }
  next();
})
export default router

4.        页面使用

// vue页面
<template>
    <span class="text-14px font-bold">
      {{ navTitle }}
    </span>
</template>
<script setup lang="ts">
    import { settingStore } from "@/store/setting";
    import { computed } from "vue";
    const navTitleStore = settingStore();
    let navTitle = computed(() => navTitleStore.navTitle);
</script>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值