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

    相关推荐

    • 2024年9款优质CRM系统全方位解析

      文章介绍的工具有:纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时,许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说,找到一个既能提高客户关系管理效率,又能适应业务扩展的CRM系统尤为重要…

      2024年7月25日
      1600
    • 数据库权限关系图表是什么

      数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

      2024年7月22日
      200
    • 诚信数据库是什么意思

      诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

      2024年7月22日
      400
    • 数据库期末关系代数是什么

      关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

      2024年7月22日
      700
    • mysql建立数据库用什么命令

      在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

      2024年7月22日
      500
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

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

    分享本页
    返回顶部