Vue的根路径为什么不能作为跳板跳转到其他页面

devtools/2025/3/22 3:48:33/

一、问题诊断

1. 根路径配置错误(直接指向 App.vue)
javascript">const router = createRouter({routes: [{path: "/",component: () => import("@/App.vue") // ❌ 错误:App.vue 不应该作为路由组件}]
})

问题本质App.vue 是 Vue 应用的 根容器组件,通常包含 <router-view> 标签。如果将它作为路由组件挂载到根路径 /,会导致路由系统嵌套混乱,形成 App.vue → <router-view> → App.vue → <router-view>... 的无限循环。
后果:路由参数无法正常传递,useRoute().query 获取为空。

2. 未正确使用 <router-view> 标签

如果 App.vue 中没有 <router-view>,或直接硬编码了其他组件(如 <Home />),会导致路由系统未激活:

<!-- ❌ 错误示例:App.vue -->
<template><Home /> <!-- 直接渲染组件,绕过路由系统 -->
</template>

二、解决方案

1. 重构路由配置文件

App.vue 作为全局容器,不要将其作为路由组件,正确配置应为:

javascript">// router/index.js
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: "/",name: "home",component: () => import("@/views/Home.vue") // ✅ 指向实际页面组件},// 其他路由...]
})
2. 修正 App.vue 结构

确保 App.vue 只包含全局布局和 <router-view>

<!-- App.vue -->
<template><!-- 全局导航栏等公共元素 --><nav>...</nav><!-- 路由出口 --><router-view /> <!-- ✅ 核心:路由内容在此渲染 -->
</template>
3. 验证参数获取

在页面组件(如 Home.vue)中获取参数:

<!-- views/Home.vue -->
<script setup>
import { useRoute } from 'vue-router'const route = useRoute()// ✅ 正确获取参数
console.log('Token:', route.query.token) 
</script>

三、最终路由配置示例

javascript">// router/index.js
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: "/",name: "home",component: () => import("@/views/Home.vue") // 实际页面组件},{path: "/about",name: "about",component: () => import("@/views/About.vue")}]
})

四、关键验证步骤

  1. 检查浏览器控制台:查看是否有 [Vue Router warn]: No match found for location with path... 等路由警告。
  2. 打印完整路由对象
javascript">// 在页面组件中调试
console.log('完整路由信息:', route)
  1. 访问 URL 直接验证
http://localhost:5173/?token=abc&senderToken=def

应能在 Home.vue 中正确输出 token: abc


五、补充说明

通配符路由处理:如果你有 404 页面,需确保通配符路由定义在最后:

javascript">routes: [{ path: '/', component: Home },// ...其他路由{ path: '/:pathMatch(.*)*', component: NotFound } // ✅ 最后定义
]

服务端重定向:如果是 SPA 应用,确保服务器配置正确,所有路径重定向到 index.html

按此方案调整后,你的 URL 参数应该可以正常解析。如果仍有问题,请提供完整的 App.vuerouter/index.js 文件内容。


http://www.ppmy.cn/devtools/169061.html

相关文章

无线数据网关 自动化测控的LoRa-4G混合网络 串口升级、信号扩展 高效物联传输网络

DLS11无线数据网关 自动化测控的LoRa-4G混合网络 串口升级、信号扩展 高效物联传输网络 DLS11是一款专为VSxxx系列采发仪设计的内置电池低功耗数据转发器&#xff0c;支持LoRA和LTE&#xff08;4G&#xff09;无线通信。该设备通过“实时在线”的LoRA收发器&#xff0c;能够收集…

uniapp报错 Right-hand side of ‘instanceof‘ is not an object

vue3使用vue2的插件组件时,会报这个错,原因是vue2组件内部的props接收属性时的type类型要写成 [ Srting , Number ] 数组的形式, 而不是 String | Number 如图所示;

Python实现WYY音乐下载

一、需求背景 WYY音乐作为国内主流音乐平台,其歌曲资源丰富但下载接口存在多重加密保护。本文将通过Python结合JS逆向技术,解析其核心加密逻辑,实现免费歌曲的下载功能。 二、技术难点分析 1. 接口加密机制 通过抓包分析可知,网易云核心接口使用两次加密: 第一次:获取…

YOLO11改进|YOLO11中引入轻量级幽灵卷积GhostConv

目录 一、【GhostConv】1.1【GhostConv】介绍二、添加【GhostConv】3.2运行成功截图一、【GhostConv】 1.1【GhostConv】介绍 下图是【GhostConv】的结构图,让我们简单分析一下运行过程和优势 运行过程: ConvModule(卷积模块): 图中有两个卷积模块(ConvModule)。每个卷积…

HTML5学习成果(仅HTML部分)

招聘信息注册页面的实现&#xff08;仅有页面&#xff09; 在学习完Web前端开发的HTML5部分后&#xff0c;综合所学知识制作 招聘信息注册页面。 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>招聘信息注册页面…

串口接收不到数据,串口RX配置(f407),f103和f407的区别

问题 芯片&#xff1a;STM32F407&#xff0c;软件&#xff1a;标准库 使用串口时&#xff0c;直接把之前STM32F103的串口配置移植过来&#xff0c;同样以串口4为例&#xff0c;代码如下&#xff1a; STM32F103 UART4&#xff1a; void UART4_Configuration(uint32_t BaudRa…

Godep是什么??在GoLang中作用是什么

文章目录 Godep是什么&#xff1f;安装 Godep是什么&#xff1f; Godep 的实现基于 Go 语言的 vendor 模式。当项目目录下有 vendor 目录时&#xff0c;go 工具链会优先使用 vendor 内的包进行编译、测试等。Godep 通过扫描项目文件引入的第三方包&#xff0c;将依赖包的代码复…

mysql之DATE_FORMAT迁移到gbase8s

-- DATE_FORMAT(d,fmt) -- fmt 有差异需转换,支持yyyy-mm-dd&#xff08;与oracle小部分有差异&#xff09;或则%Y-%m-%d&#xff08;mysql小部分有差异&#xff09;格式 drop function if exists DATE_FORMAT(datetime year to second, varchar); create dba function DATE_FO…