javascript - vue router导航栏到底该怎么加?
高洛峰
高洛峰 2017-04-11 12:15:46
[JavaScript讨论组]

细致描述一下我的问题:
我的需求其实很简单,但是被vue-router 的router view搞晕了

需求是:做一个导航栏,点击导航,其下方内容改变(也就是切换 一个view)

最开始我是这样想的

在App.vue 文件里面 直接写上 导航如下

App.vue大致代码如下
单音
多轨
混音



然后 将 这几个link对应的页面设置成 App.vue路径的chirden

就像这样

const routers = [{
  path: '/',
  component: App,
  // meta: { requiresAuth: true },
  children: [{
    path: '/home',
    component: Home,
    children:HomeChild
  }, {
    path: '/manageApp',
    component (resolve) {
      require.ensure(['../views/manage_app.vue'], () => {
        resolve(require('../views/manage_app.vue'))
      })
    },
    children:ManageAppChild
  }, {
    path: '/ManageConfig',
    component (resolve) {
      require.ensure(['../views/manage_config.vue'], () => {
        resolve(require('../views/manage_config.vue'))
      })
    },
    children: ManageConfigChild
  },{
    path: '/publishApp',
    component (resolve) {
      require.ensure(['../views/publish_app.vue'], () => {
        resolve(require('../views/publish_app.vue'))
      })
    },
    children: publishAppChild
  }, {
    path: '/threat-perception',
    name: 'threat-perception',
    component (resolve) {
      require.ensure(['../views/manage_app.vue'], () => {
        resolve(require('../views/manage_app.vue'))
      })
    }
  }]
}

但是,这样点击App里面的导航的时候,router-view里面又会渲染出带导航栏的页面,相当于再渲染了一次App.vue,我想想好像也是这个道理,点击link之后 router-view里面渲染 点击出来的页面,如果这个页面是谁的子页面,那就连带父集一起渲染了,但是这样的逻辑,反正我又晕了。。。

如何才能解决这个问题呢?
我看了别人的实例,他们是这样定义的

App.vue里面只有一个router view

然后 将默认页面指向了一个带导航条的页面,页面里面 也有一个router-view
点击导航条,下方就会切换到对应的子页面。。。。

const routers = [{
  path: '/',
  component: require('../views/top_menu.vue'),
  children:[
    {
      path: '/',
      component:require('../views/singleAudio.vue')
    },

    {
      path: '/multi',
      component:require('../views/multi_audio.vue')

    },

    {
      path: '/manageApp',
      component:require('../views/multi_audio.vue')
    },

    {
      path: '/ManageConfig',
      component :require('../views/singleAudio.vue')
    },
    {
      path: '/publishApp',
      component:require('../views/singleAudio.vue')
    },

    {
      path: '/threat-perception',
      name: 'threat-perception',
      component :require('../views/singleAudio.vue')
    }
    ]
}

]

大概设置如图,但是我觉得跟我的差不多啊。。。。。、为啥他的就不会出现我那种重复渲染的现象。。。。。
求大神,解答疑惑,谢谢了%>_<%

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
巴扎黑

不要用 children,children 是在当前 router-view 里面的 router-view 渲染

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号