当前位置: 首页 > article >正文

vue3中,route4,获取当前页面路由的问题

首先应用场景如下:

在main.js里面,引入的是路由的配置文件,如下:

import {router} from '@/router';
app.use(router);

路由配置文件router.js如下:

import { createRouter, createWebHistory } from 'vue-router';
import Page1 from '../views/Page1.vue';
import Page2 from '../views/Page2.vue';

const routes = [
  {
   path:'/',redirect:'/login',component:()=>('@/views/index'),
   children:[
    path:'page',redirect:'/a/b',
    children:[{},{}] 
  ]
  },
  {
    path: '/page1',
    name: 'login',
    component: Page1
  },
  {
    path: '/page2',
    name: 'Page2',
    component: Page2
  }
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;
router.beforeEach((to,from,next))=>{
  const token = getToken('token');
  if(to.name!=='login' && !token){
  next({name:'login'})

  }else{next()}
}

引用组件如下:

<template>
  <button @click="handleLogout">退出</button>
</template>

<script setup>
import {router} from '@/router';
//!!!注意,此时,useRoute是不能用的,因为引入顺序的问题。需要先引入下面一行,再引入上面一行。
import { useRoute } from 'vue-router';

// 获取当前路由对象
const route = useRoute();

const handleLogout = () => {
  const currentPath = route.path;

  switch (currentPath) {
    case '/page1':
      // 在 page1 页面点击退出按钮时的操作
      console.log('在 page1 页面执行退出操作');
      // 可以添加具体的退出逻辑,比如清除缓存、跳转到登录页等
      break;
    case '/page2':
      // 在 page2 页面点击退出按钮时的操作
      console.log('在 page2 页面执行退出操作');
      // 可以添加不同的退出逻辑
      break;
    default:
      // 其他页面的默认退出操作
      console.log('在其他页面执行退出操作');
      break;
  }
};
</script>

总之注意引入顺序,应先引入useRoute再引入router.js。要不然获取不到本页路径。


http://www.kler.cn/a/612386.html

相关文章:

  • 力扣HOT100之普通数组:238. 除自身以外数组的乘积
  • 【问题解决】Postman 请求报错 500 之 Request processing failed
  • Vue 中为什么data属性是一个函数而不是一个对象?
  • 深入解析 MyBatis-Plus 批量操作:原理、实现与性能优化
  • vue 3 深度指南:从基础到全栈开发实践
  • cocos creator 笔记-路边花草
  • 【nvm】nvm所有命令
  • 春日焕新居:约克VRF中央空调,科技赋能,带你开启健康呼吸新时代
  • 接口测试中数据库验证,怎么解决?
  • 练习:猜数字小游戏
  • 【活动回顾】StarRocks Singapore Meetup #2 @Shopee
  • 解释 let 和 const 的作用域及用法。
  • Snowflake 算法的实现
  • docker创建registry镜像仓库2.8版本
  • 基于springboot人脸识别的社区流调系统(源码+lw+部署文档+讲解),源码可白嫖!
  • Spring中拦截器(Interceptor)与过滤器(Filter)的区别
  • AndroidStudio无法识别连接夜神模拟器
  • JVM动态代理和JDK动态代理介绍
  • 数字化工厂建设:制造业的智能化革命 尤劲恩
  • mysql--socket报错