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

Vue2项目中<router-link>与router.js失效问题求助

Vue 2 路由问题排查与修复

问题现象

运行项目后文章列表正常展示,但<router-link>包裹的标题无法点击;所有路径都显示PostItem页面,路由配置完全无效。

核心问题分析与修复步骤

1. Vue Router 未正确初始化与挂载

这是路由完全失效的根本原因:

  • 原router.js仅导出了路由数组,未创建Router实例并注册到Vue中
  • App.vue直接渲染PostItem组件,未使用<router-view>作为路由组件的挂载容器

修正后的router.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import PostItem from './components/PostItem.vue';
import singlePost from './components/singlePost.vue';

// 注册Vue Router插件
Vue.use(VueRouter)

const routes = [
    { path: '/', component: PostItem },
    { path: '/post/:id', component: singlePost }
]

// 创建Router实例
const router = new VueRouter({
  routes
})

export default router

修正main.js(项目根目录下,需确保存在)

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

new Vue({
  // 注入路由实例
  router,
  render: h => h(App)
}).$mount('#app')

修正App.vue

将硬编码的<PostItem/>替换为路由视图容器:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

2. singlePost 组件的多处错误

  • 模板中使用{{blog.title}},但data中定义的变量是post,变量名不匹配
  • 使用this.$http需要额外安装Vue Resource依赖,改用原生fetch更简洁
  • 原then回调用普通函数导致this指向错误,改用箭头函数绑定组件实例

修正后的singlePost.vue

<template>
    <div id="single-post">
        <h1>{{post.title}}</h1>
        <p>{{post.body}}</p>
    </div>
</template>

<script>
export default{
    data(){
        return {
            post: {}
        }
    },
    created(){
        fetch(`https://jsonplaceholder.typicode.com/posts/${this.$route.params.id}`)
          .then(res => res.json())
          .then(data => this.post = data)
          .catch(err => console.log(err.message))
    }
}
</script>

<style>
#single-post{
    max-width: 960px;
    margin: 0 auto;
}
</style>

验证修复效果

完成上述修改后:

  • 文章标题的<router-link>可正常点击跳转
  • 访问/post/:id路径会渲染对应单篇文章
  • 根路径/显示文章列表,路由规则生效

内容的提问来源于stack exchange,提问作者Oğulcan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:15:23