vue三级路由

昨天写了一个vue三级路由,才开始以为和两级写法一样,但是却报错了,经过查询。。。找到正确的写法,今天就分享一下给大家。。
vue中的router的index.js文件中:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import Login from '../views/login/Login.vue'
Vue.use(VueRouter)

const routes = [

  {
    path: '/login',
    name: 'login',
    component: Login
  },
  {
    path: '/',
    name: 'Home',
    component: Home,

    // meta路由自身自带的属性
    meta: {
      auth: true,
    },
    children: [{
        path: '/',
        name: 'User',
        component: () => import('../views/home/user/User.vue')
      },
      // 商品列表
      {
        path: '/goods',
        name: 'Goods',
        component: () => import('../views/home/card/Goods.vue'),
        children: [{
            path: '/',
            name: 'GoodDetail',
            component: () => import('../views/home/card/GoodDetail.vue'),
          },
          {
            path: '/goods/add',
            name: 'Addlist',
            component: () => import('../views/home/card/Addlist'),
          }
        ]
      },

    ]
  },

]

const router = new VueRouter({
  routes
})

export default router  

然后点击事件执行:

 <el-button type="primary" @click="addGoodlist">添加商品</el-button>

export default {
  methods: {
    //  添加商品
    addGoodlist() {
      this.$router.push("/goods/add");
    }
  }
 }

实现就是这样,容易错的点就是路径容易写错。
注:是/goods/add不是/add

2023年2.28
经过评论区小伙伴提出的看法,我去实践了一下,发现下面这种写法也可以实现:

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
    // meta路由自身自带的属性
    meta: {
      auth: true,
    },
    children: [{
        path: '/',
        name: 'User',
        component: () => import('../views/home/user/User.vue')
      },
      // 商品列表
      {
        path: '/goods',
        name: 'Goods',
        component: () => import('../views/home/card/Goods.vue'),
        children: [{
            path: '/',
            name: 'GoodDetail',
            component: () => import('../views/home/card/GoodDetail.vue'),
          },
          {
            path: 'add',
            name: 'Addlist',
            component: () => import('../views/home/card/Addlist'),
          }
        ]
      },

    ]
  }
  ]

事件执行为:

   addGoodlist() {
      this.$router.push("/add");
   }
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Vue中配置三级路由的方法如下: 首先,在路由配置文件中定义一级路由和二级路由,例如: ```javascript const routes = \[ { path: '/', component: Home, children: \[ { path: 'category', component: Category, children: \[ { path: 'product', component: Product } \] } \] } \] ``` 在上述代码中,`/`是一级路由,`/category`是二级路由,`/category/product`是三级路由。 然后,在一级路由和二级路由的组件中添加 `<router-view></router-view>`,以便渲染三级路由的内容。例如,在Category组件中: ```html <template> <div> <h2>Category</h2> <router-view></router-view> </div> </template> ``` 最后,在Vue实例中使用路由配置: ```javascript const router = new VueRouter({ routes }) new Vue({ router }).$mount('#app') ``` 这样就完成了Vue三级路由配置。当访问`/category/product`时,会先渲染一级路由的组件(Home),然后在其中的`<router-view></router-view>`中渲染二级路由的组件(Category),最后在二级路由的组件中的`<router-view></router-view>`中渲染三级路由的组件(Product)。 引用\[1\]中提到了在配置三级路由时需要注意的问题,即在三级路由的页面中需要添加`<router-view></router-view>`,否则页面会显示空白。这是因为在配置时,二级路由的`component`指向的是面包屑组件路径而非三级页面所在路径,通过`redirect`重定向到三级页面。 引用\[2\]和\[3\]中提到了通过`this.$route.matched.length`来判断一级/二级菜单下是否有三级菜单的方法。根据`this.$route.matched.length`的值,可以判断出点击的一级/二级菜单下是否有三级菜单。 #### 引用[.reference_title] - *1* *2* *3* [vue 动态显示三级路由](https://blog.csdn.net/Start2019/article/details/119851382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值