【问题标题】:VueJs components are not showing using the Vue routerVueJs 组件未显示使用 Vue 路由器
【发布时间】:2018-12-27 18:45:14
【问题描述】:

我正在使用 Vue 路由器在我的 src 文件中指向名为 components 的文件夹中的不同组件,这很奇怪,但是所有组件中的模板都是相同的,我已经导入文件并以完全相同的方式定义路由,当然除了确切的组件文件名 这是我的 main.js 文件

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import CreateMeetUp from '@/components/Meetup/CreateMeetUp'
import Profile from '@/components/user/Profile.vue'
import SignIn from '@/components/user/SignIn'
import SignUp from '@/components/user/SignUp'
import Meetup from '@/components/Meetup/Meetup.vue'
import msg from '@/components/msg.vue'

Vue.use(Router)
export default new Router({
  base: __dirname,
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/Meetup',
      component: Meetup
    },
    {
      path: '/Meetup',
      component: CreateMeetUp
    },
    {
      path: '/user',
      component: Profile
    },
    {
      path: '/user',
      component: SignIn
    },
    {
      path: '/user',
      component: SignUp
    },
    {
      path: '/',
      component: HelloWorld
    },
    {
      path: '/',
      component: msg
    }

  ],
  mode: 'history'
})

这是我的 main.js 文件

import Vue from 'vue'
import App from './App'
import router from './router'
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'

Vue.use(Vuetify)

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

奇怪的是,它们中的两个组件都显示出来了,Home.vue 和 Meetup.vue,其余的根本没有显示。有人可以帮忙吗?再次,组件​​模板本身是相同的,以防你徘徊,提前感谢)

【问题讨论】:

  • 您定义了一些具有相同路径和不同组件的路由。比如/Meetup,你想渲染什么组件? Meetup 还是 CreateMeetup?删除所有具有重复路径的路由,它应该可以工作
  • @Jorj 有答案。当使用相同路径定义多个路由时,仅使用第一个。这意味着/user 也应该可以工作,重定向到Profile 组件。
  • 是的,但我不能在一个路径中有多个组件,通过组件属性选择组件名称,我选择我要显示的特定组件>>
  • @magus 甚至 Profile 都没有显示,虽然我明白你的意思,但它仍然无法正常工作,只有 Home 和 Meetup 显示!!!

标签: javascript vue.js


【解决方案1】:

Jorj 和 Magnus 是正确的,您有相同的路径,例如 '/user' 和 '/Meetup',这会导致您的所有问题。

但是,如果您希望拥有相同的路由路径(但不推荐),仍然可以通过嵌套路由。请点赞Vue-Router Nested-Routes

const router = new VueRouter({
  routes: [
  {
   path: '/meetup', component: Meetup,
   children: [

    { path: '/meetup', component: CreateMeetUp },

    // ...other sub routes
   ]
  }
 ]
})

然后你只需要包含在你的根路径中

Meetup.vue

  <transition mode="out-in">
     <router-view></router-view>
  </transition>

【讨论】:

  • 非常感谢大家,你们的回答绝对能帮助我理解和解决我犯的错误,干杯)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2021-10-09
  • 2021-06-29
  • 2018-10-11
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多