vue-router中children怎么使用

    关于children使用

    children的使用场景

    比如页面左侧显示菜单,右侧显示不同菜单下的内容,类似如下element网站,那么右侧部分的内容就是当前页面的children

    vue-router中children怎么使用

    存在如下场景,点击导航一跳转至页面1,导航二跳转页面2,且页面1中存在子页面

    路由js如下:

    const routes = [{    path: '/',    name: 'Home',    component: Home,    children: [{      path: '/page1',      name: 'page1',      component: function () {        return import( /* webpackChunkName: "about" */ '../views/Page1.vue')      },      children: [{        path: '/page1Son',        name: 'page1Son',        component: function () {          return import( /* webpackChunkName: "about" */ '../views/Page1Son.vue')        }      }],    },    {      path: '/page2',      name: 'page2',      component: function () {        return import( /* webpackChunkName: "about" */ '../views/Page2.vue')      }    }]  }]

    首页代码如下:

    <template>  <div class="home">    <el-menu default-active="2" class="el-menu-vertical-demo">      <el-submenu index="1">        <template slot="title">          <i class="el-icon-location"></i>           <span slot="title"><router-link to="/page1">导航一</router-link></span>        </template>      </el-submenu>      <el-menu-item index="4">        <i class="el-icon-setting"></i>        <span slot="title"><router-link to="/page2">导航二</router-link></span>      </el-menu-item>    </el-menu>    <router-view></router-view>  </div></template>

    vue-router中children怎么使用

    点击导航栏一显示页面1下的内容

    vue-router中children怎么使用

    vue-router中children怎么使用

    点击页面1中的显示按钮,显示页面1的子页面page1Son

    vue-router中children怎么使用

    vue-router中children怎么使用

    点击导航栏二显示页面2

    vue-router中children怎么使用

    vue-router中children怎么使用

    router配置中children配置不起作用

    刚开始学习前端技术,再配置路由的时候,发现路由配置中children。

    import Vue from 'vue'import Router from 'vue-router'import menus from '@/config/menu-config' Vue.use(Router) export default new Router({  mode: 'history',  routes: [    {      path: '/table',      //name: 'table'  父组件没有页面,不选哟name      component: {render: (e) => e("router-view")},      children: [        {          path: 'table_show_view',   //不需要在前面加 ‘/', 在导航中的index  使用 /table/table_show_view          name: 'tableShow',          component: () => import('@/components/table/TableView.vue'),        },        {          path: 'queryTableView',   //不需要在前面加 ‘/', 在导航中的index  使用 /table/queryTableView          name: 'query_table_view',          component: () => import('@/components/table/TableQueryShow.vue'),        },        {          path: 'selectTableView',   //不需要在前面加 ‘/', 在导航中的index  使用 /table/selectTableView          name: 'selectTableView',          component: () => import('@/components/table/SelectTableView.vue'),        },        {          //默认跳转页面,当访问  /table时 跳转到  /table_show_view          path: '/',          name: 'fable_redirect',          redirect: '/table/table_show_view',        }      ]    },    {      path: '/form',      component: {render: (e) => e("router-view")},      children: [        {          path: 'form_insert_submit',          name: 'formSubmit',          component: () => import('@/components/form/FormView.vue'),        },        {          path: 'query_form_view',          name: 'queryFormView',          component: () => import('@/components/form/FormView.vue'),        },        {          //默认跳转页面,当访问  /table时 跳转到  /form/form_insert_submit          path: '/',          name: 'form_redirect',          redirect: '/form/form_insert_submit',        }      ]    },    ,    {      path: '/pagination',      component: {render: (e) => e("router-view")},      children: [        {          path: 'paginationShow',          name: 'paginationShow',          component: () => import('@/components/pagination/Pagination.vue'),        },        {          path: 'paginationTableShow',          name: 'paginationTableShow',          component: () => import('@/components/pagination/PaginationTableShow.vue'),        },        {          //默认跳转页面,当访问  /table时 跳转到  /pagination/paginationShow          path: '/',          name: 'pagination_redirect',          redirect: '/pagination/paginationShow',        }      ]    }  ]})

    导航栏的vue代码如下:NavMenu.vue

    <template>  <el-row class="tac">    <el-col :span="24">      <el-menu        :default-active="this.$route.path"        class="el-menu-vertical-demo"        router        unique-opened        @open="handleOpen"        @close="handleClose"        background-color="#545c64"        text-color="#fff"        active-text-color="#ffd04b">        <el-submenu index="/table">          <template slot="title">            <i class="el-icon-menu"></i>            <span>表格操作学习</span>          </template>          <el-menu-item-group class="over-hide">            <template slot="title">分组一</template>            <el-menu-item class="el-icon-user" index="/table_show_view">表格展示</el-menu-item>            <el-menu-item class="el-icon-user" index="/queryTableView">表格查询展示</el-menu-item>            <el-menu-item class="el-icon-user" index="/selectTableView">选择框表单</el-menu-item>          </el-menu-item-group>        </el-submenu>        <el-submenu index="/form">          <template slot="title">            <i class="el-icon-menu"></i>            <span>表单学习</span>          </template>          <el-menu-item-group class="over-hide">            <template slot="title">分组一</template>            <el-menu-item  class="el-icon-user" index="/form_insert_submit">表单输入提交</el-menu-item>            <el-menu-item  class="el-icon-user" index="/query_form_view">表单查询修改</el-menu-item>          </el-menu-item-group>          <el-submenu index="2-4">            <template slot="title">选项4</template>            <el-menu-item class="el-icon-user" index="/home">选项1</el-menu-item>          </el-submenu>        </el-submenu>        <el-submenu index="/pagination">          <template slot="title">            <i class="el-icon-menu"></i>            <span>分页插件</span>          </template>          <el-menu-item class="el-icon-user" index="/paginationShow">分页查看</el-menu-item>          <el-menu-item class="el-icon-user" index="/paginationTableShow">分页获取表数据</el-menu-item>        </el-submenu>      </el-menu>    </el-col>  </el-row></template>
    <style scoped>.over-hide {  overflow: hidden;}</style>
    <script>import menu from '@/config/menu-config' export default {  data() {    return {      menu: menu    }  },  methods: {    handleOpen(key, keyPath) {      console.log(key, keyPath)    },    handleClose(key, keyPath) {      console.log(key, keyPath)    }  }}</script>

    发现点击之后页面没有展现指定页面的功能。

    vue-router中children怎么使用

    可以看得出,是没有路由展现/table_show_view 路由的信息。

    经过排查发现,路由中的children的访问,必须把path路径写全才能访问到。

    vue-router中children怎么使用

    如上图的配置,如果需要访问/table_show_view,需要完整的访问路径即:/table/table_show_view。

    最终我的菜单配置如下:

    <template>  <el-row class="tac">    <el-col :span="24">      <el-menu        :default-active="this.$route.path"        class="el-menu-vertical-demo"        router        unique-opened        @open="handleOpen"        @close="handleClose"        background-color="#545c64"        text-color="#fff"        active-text-color="#ffd04b">        <el-submenu index="/table">          <template slot="title">            <i class="el-icon-menu"></i>            <span>表格操作学习</span>          </template>          <el-menu-item-group class="over-hide">            <template slot="title">分组一</template>            <el-menu-item class="el-icon-user" index="/table_show_view">表格展示</el-menu-item>            <el-menu-item class="el-icon-user" index="/table/queryTableView">表格查询展示</el-menu-item>            <el-menu-item class="el-icon-user" index="/table/selectTableView">选择框表单</el-menu-item>          </el-menu-item-group>          <!-- <el-submenu index="1-4">             <template slot="title">选项4</template>             <el-menu-item index="/index/home">选项1</el-menu-item>           </el-submenu>-->        </el-submenu>        <el-submenu index="/form">          <template slot="title">            <i class="el-icon-menu"></i>            <span>表单学习</span>          </template>          <el-menu-item-group class="over-hide">            <template slot="title">分组一</template>            <el-menu-item  class="el-icon-user" index="/form/form_insert_submit">表单输入提交</el-menu-item>            <el-menu-item  class="el-icon-user" index="/form/query_form_view">表单查询修改</el-menu-item>          </el-menu-item-group>          <el-submenu index="2-4">            <template slot="title">选项4</template>            <el-menu-item class="el-icon-user" index="/index/home">选项1</el-menu-item>          </el-submenu>        </el-submenu>        <el-submenu index="/pagination">          <template slot="title">            <i class="el-icon-menu"></i>            <span>分页插件</span>          </template>          <el-menu-item class="el-icon-user" index="/pagination/paginationShow">分页查看</el-menu-item>          <el-menu-item class="el-icon-user" index="/pagination/paginationTableShow">分页获取表数据</el-menu-item>        </el-submenu>      </el-menu>    </el-col>  </el-row></template>

    除此之外,再使用路由的地方需要加入: <router-view></router-view> 才能使用路由

    <template>  <div id="app">    <el-container>      <el-header class="header">        <vheader/>      </el-header>      <el-container>        <el-aside class="menus_style">          <navmenu></navmenu>        </el-aside>        <el-main>          <router-view></router-view>        </el-main>      </el-container>    </el-container>  </div></template>
    <script>import NavMenu from '@/components/layout/NavMenu'import Header from '@/components/layout/Header' export default {  name: 'app',  components: {    'navmenu': NavMenu,    'vheader': Header  }}</script>
    <style>.menus_style{  width: 200px;  height: 100%;}.header {  background-color: #409EFF;  color: #fff;  line-height: 60px;}</style>

    感谢各位的阅读,以上就是“vue-router中children怎么使用”的内容了,经过本文的学习后,相信大家对vue-router中children怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

    文章标题:vue-router中children怎么使用,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/21623

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    亿速云的头像亿速云认证作者
    上一篇 2022年8月30日 下午11:25
    下一篇 2022年8月30日 下午11:26

    相关推荐

    • microsoft visual c++可不可以卸载

      microsoft visual c++可以卸载吗 microsoft visual c++不建议卸载。 1.Microsoft Visual C++ Redistributable Package是Visual C++的运行时组件和库 2.很多软件,尤其是游戏所必须的 Microsoft VC++…

      2022年9月2日
      2.3K00
    • windows浩辰cad看图王怎么对比图纸

      浩辰cad看图王对比图纸的方法: 1、首先点击文件,打开任意一张图纸。 2、然后随便选择一张图纸打开。 3、打开后进入“扩展工具”,选择“图纸比较” 4、分别点击浏览选择旧图纸和新图纸。 5、如果我们要保存比较后的图纸,可以勾选保存图形。 6、设置完成后,点击下方的“比较” 7、比较完成后,会出现一…

      2022年9月21日
      52100
    • cad快速看图标注看不见怎么解决

      cad快速看图标注看不见解决方法: 1.把图纸上传到快看云盘,然后从云盘列表里打开这个图,点左侧的【同步标注】,名列前茅次使用云盘的请先登录账号、创建项目; 2.提示同步成功后,点云盘右上角的【成员】按钮,把对方的CAD快速看图账号添加为成员; 3.添加完成后,再点图纸左侧功能里的【成员协作】&#8…

      2022年9月1日
      1.2K00
    • SQL语句知识点有哪些

      一、SQL简介 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。 1.什么是数据库 数据库 (DB database) 概念:数据仓库 …

      2022年9月22日
      83300
    • mysql如何修改存储引擎为innodb

      两种修改方法:1、使用SET语句临时修改默认存储引擎,语法为“SET default_storage_engine=innodb;”,当重启客户端后就会恢复为原引擎类型。2、使用ALTER TABLE语句修改,语法“ALTER TABLE 表名 ENGINE=innodb;”,可以修改指定表的引擎类…

      2022年9月21日
      1.1K00
    • 电脑更新错误0x800f0988如何解决

      解决方法: 方法一: 1、首先点击左下角的开始菜单,然后在其中找到“设置” 2、再点击进入设置中的“更新和安全” 3、然后在左侧边栏中选择“疑难解答” 4、然后在右侧启动并运行中点开“windows更新”,选择“运行疑难解答” 5、最后只要等待系统自动检测问题并解决就可以正常更新了。 方法二: 1、…

      2022年9月16日
      91500
    • css中的选择器包不包括超文本标记选择器

      不包括。css选择器有:1、标签选择器,是通过HTML页面的元素名定位具体HTML元素;2、类选择器,是通过HTML元素的class属性的值定位具体HTML元素;3、ID选择器,是通过HTML元素的id属性的值定位具体HTML元素;4、通配符选择器“*”,可以指代所有类型的标签元素,包括自定义元素;…

      2022年9月1日
      71900
    • mysql如何将值转换为二进制

      3种转换方法:1、使用BIN()函数,可以返回指定数字的二进制值的字符串表示形式,语法“BIN(number)”,参数“number”是一个长整型(BIGINT)数。2、使用CONV()函数,可将一个进制转为另一个进制,语法“CONV(number,10,2)”,能返回指定数字的二进制值。3、使用B…

      2022年9月26日
      1.0K00
    • windows ddu卸载显卡驱动使用问题怎么解决

      ddu卸载显卡驱动怎么用: 1、首先,我们运行“Display Driver Uninstaller.exe”程序软件。 2、打开后,在右下角可以修改为“简体中文” 3、接着在右上角可以选择设备种类,“显卡”或者“声卡” 4、在下方选择我们的设备供应商。 5、选择完成后点击下方按钮,可以恢复设备的默…

      2022年9月21日
      1.0K00
    • 如何解决mysql服务无法启动1069

      解决mysql服务无法启动的1069错误方法:1、在管理用户中找到mysql用户并重新设置mysql密码;2、在服务中找到mysql服务选项,在属性中通过更改后的密码重新登录mysql服务即可。出现1069错误的原因是更改了服务器的登录密码。 本教程操作环境:windows10系统、mysql8.0…

      2022年9月5日
      70800
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

    工作日9:30-21:00在线

    分享本页
    返回顶部