You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js两个组件间路由跳转仅更新URL页面无跳转问题咨询

路由不生效问题解决方案
  • 问题1:App.vue模板缺少路由出口
    你当前把<Home/>和<AddService/>组件硬编码在模板中,路由切换不会触发这两个组件的替换。需要将其替换为<router-view>标签,路由匹配到的组件会自动渲染到该位置。
    修改后template代码:
<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <router-view></router-view>
  </div>
</template>
  • 问题2:router实例未挂载到Vue根实例
    你已经创建了router实例并调用Vue.use(VueRouter),但没有将router实例传入Vue根实例的配置,Vue无法识别路由规则。
    建议将路由配置抽离到src/router/index.js文件:
// src/router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../components/Home.vue'
import AddService from '../components/AddService.vue'

Vue.use(VueRouter)

const router = new VueRouter({
    mode: 'history',
    routes: [
        {
            path: '/',
            redirect: '/home'
        },
        {
            path: '/home',
            name: 'home',
            component: Home
        },
        {
            path: '/addService',
            name: 'addService',
            component: AddService
        }
    ]
})

export default router

在入口文件main.js中挂载router实例:

import Vue from 'vue'
import App from './App.vue'
import router from './router'

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

修改后App.vue的script可以删除路由相关逻辑,只保留组件基础配置即可。

  • 问题3:使用原生a标签跳转不符合Vue路由规范
    原生a标签会触发页面刷新,走后端请求逻辑,无法触发前端路由切换。将Home页面的跳转代码替换为router-link组件:
<router-link to="/addService">Add a new Service</router-link>

如果需要保留a标签样式,可添加点击事件阻止默认跳转行为,用编程式导航实现路由切换:

<a href="../addService" @click.prevent="$router.push('/addService')">Add a new Service</a>

完成以上修改后路由即可正常切换。


内容的提问来源于stack exchange,提问作者starforce10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 23:27:05