router.push(‘/‘)跳转不触发重定向

我来帮你分析为什么 router.push('/') 没有按照预期跳转到 /fenlei 路径。

首先让我查看相关的代码文件:

javascript 复制代码
router/index.js
  {
    path: '/',
    component: Layout,
    redirect: '/fenlei'
  },

已查看文件 index.vue 225-240

已查看文件 index.js 65-85

现在让我查看更多上下文,了解这个函数的完整逻辑:

已查看文件 index.vue 210-236

现在我明白问题所在了!让我解释一下:

问题分析

router.push('/') 没有跳转到 /fenlei 的原因是:

redirect 配置只在路由匹配时生效,而 router.push() 是编程式导航,不会触发重定向。

具体来说:

  1. 路由配置中的 redirect :在 router/index.js 中,/ 路径配置了 redirect: '/fenlei',这意味着当用户直接访问 / 时,会自动重定向到 /fenlei

  2. router.push('/') 的行为 :在 [TagsView/index.vue](file://E:\JavaProject\sxcm-relic-platform\ruoyi-ui\src\layout\components\TagsView\index.vue) 的 233 行,使用 router.push('/')编程式导航 ,它会直接导航到 / 路径,而不会触发路由配置中的 redirect

  3. Vue Router 的机制redirect 配置只在 URL 匹配路由时自动触发,而通过 router.push()router.replace() 等编程式导航方法调用时,如果路径已经匹配成功,就不会再触发重定向。

解决方案

有两种方式可以解决这个问题:

方案 1:直接跳转到 /fenlei(推荐)

修改 TagsView 组件,直接跳转到目标路径:

vue 复制代码
router.push('/fenlei')
相关推荐
2601_955354462 小时前
SEO新手如何快速入门学习
前端·学习·搜索引擎
_MyFavorite_2 小时前
JAVA重点基础、进阶知识及易错点总结(16)多线程基础(Thread & Runnable)
java·开发语言
misty youth2 小时前
提示词合集【自用】
开发语言·前端·ai编程
zzginfo2 小时前
ES6 中的 “?.” 可选链运算符用法
前端·ecmascript·es6
战族狼魂2 小时前
Claude Code 源码泄露事件
前端·npm·node.js
zero15972 小时前
Python 8天极速入门笔记(大模型工程师专用):第六篇-函数进阶 + 模块导入,大模型实战调用前置
开发语言·python·大模型编程语言
We་ct2 小时前
LeetCode 67. 二进制求和:详细题解+代码拆解
前端·数据结构·算法·leetcode·typescript
还是大剑师兰特2 小时前
为什么要用 import.meta.glob 加载 SVG 图标库
开发语言·前端·javascript
谪星·阿凯2 小时前
PHP序列化漏洞从入门到实战博客
android·开发语言·web安全·php