使用Vue-router二级路由跳转另一条路由下的子级

作者:Whitess007 时间:2024-05-09 09:52:07 

Vue-router二级路由跳转另一条路由下的子级

实验项目中,在一个 /list/user 列表中,当点击某一条时,需要跳转到 /detail/userId/user 详情下,展示详情信息。

router.js

const routes = [
   {
       path: '/ue/matter/list',
       name: 'list',
       component: List,
       children: [
           { path: 'user', name: 'list-user', component: ListUser },
       ],
       props: true
   },
   {
       path: '/ue/matter/detail/:userId',
       name: 'detail',
       component: Detail,
       children: [
           { path: 'user', name: 'detail-user', component: DetailUser },
       ],
       props: true
   }
]

ListUser 组件中,采用编程式导航的方式跳转,写法如下:

this.$router.push({name:detail-user, path:`/ue/matter/detail/user/${userid}/user}`);

或者如下

this.$router.push({name: detail-user});

结果

组件内容确实更换了,但浏览器上的地址栏错了

使用Vue-router二级路由跳转另一条路由下的子级

实验

看官方文档说,path+params地方式会被忽略,所以将router.push中用到的键path、params、name、query分别组合做了一个页面,来测试哪种会不可以。

<!DOCTYPE html>
<html>

<head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <title>router-linkto</title>
   <link rel="stylesheet" href="">
</head>

<body>
   <div id="app">
   <router-link :to="{ path: 'home' }">path单独 </router-link>
   &nbsp;&nbsp;
<router-link :to="{ path: 'foo', name: foo}">path + name </router-link>
&nbsp;&nbsp;
<router-link :to="{ path: 'bar', query: {plan:'private'} }">path + query /bar?plan="private"</router-link>
&nbsp;&nbsp;
   <router-link :to="{ name: 'user', params: {userId:123} }">name + params /user/123</router-link>
   &nbsp;&nbsp;
       <router-link :to="{ name: 'many', query: {plan:'private'} }">name + query </router-link>
       &nbsp;&nbsp;
       <router-link :to="{ params: { userId: 123 }, query: {plan: 'private'} }">params + query </router-link>
       &nbsp;&nbsp;
       <br/>
       <br/>
       <router-view></router-view>
   </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<script>

const Home = {
template: '<div>Home path单独 <span v-on:click="change()">点击跳转到path+name</span> </div>',
methods: {
change: function() {
   this.$router.push({name: "foo", path: "/foo"})
   }
}

}
const Foo = { template: "<div>Foo path+name</div>"}
const Bar = { template: "<div>Bar path+query</div>"}
const User = { template: "<div>User {{$route.params.userId}}</div>" }
const Many = { template: "<div>Many name+params</div>" }
const Too = { template: "<div>Too params + query</div>" }

const router = new VueRouter({
   routes: [
   {
       path: "/home",
       component: Home
       },
       {
       name: "foo",
       path: "/foo",
       component: Foo
       },
       {
       path: "/bar",
       component: Bar
       },
       {
       name: "user",
       path: "/user/:userId",
       component: User
       },
       {
       path: "/many",
       name: "many",
       component: Many
       },
       {
       path: "/too/:userId",
       component: Too
       }

]
})
new Vue({
   el: '#app',
   router
})
</script>

</html>

结论:

结果是:除了path+params之外,params+query也不可以,因为没有告知路径信息

那对于上面涉及二级跳转,那写name + path的方式,我理解的是path需要拼接,所以给了name就会找不到路径。我之后的修改是,只传给push一个字符串路径。

this.$router.push(`/ue/matter/detail/user/${userid}/user`)

vue二级路由跳转一级路由激活处理

有时候有的页面是一个页面的子页面,这时候点击打开跳转到二级页面,这个时候

一级导航的路由可能激活状态不对应

本人是这么处理的

<el-menu :default-active="$route.path.match('(/[a-z]+[^/]){1}')[0]"

这样就可以匹配目标页面的路由匹配头部就聚焦 

来源:https://blog.csdn.net/rencaishigepi/article/details/100769409

标签:Vue-router,二级路由,跳转,路由,子级
0
投稿

猜你喜欢

  • Python pandas之求和运算和非空值个数统计

    2023-11-19 03:04:59
  • Python eval函数原理及用法解析

    2021-04-29 05:17:18
  • python 实现docx与doc文件的互相转换

    2022-01-19 06:45:58
  • python 如何将数据写入本地txt文本文件的实现方法

    2021-05-02 14:11:52
  • python 实时得到cpu和内存的使用情况方法

    2023-10-05 20:03:24
  • 使用Python操作PDF文件

    2022-01-01 06:15:12
  • Python代码阅读--列表元素逻辑判断

    2022-08-05 16:12:57
  • DIV+CSS常见错误及解决方法

    2008-04-25 22:46:00
  • 人工智能学习Pytorch教程Tensor基本操作示例详解

    2021-06-14 17:39:22
  • 使用Python爬虫爬取小红书完完整整的全过程

    2022-03-23 05:12:44
  • Pytorch模型微调fine-tune详解

    2021-06-17 07:29:00
  • Python函数之zip函数的介绍与实际应用

    2022-06-02 00:52:51
  • 浅论网站用户粘性的提高和增强

    2008-05-15 07:14:00
  • vue axios拦截器常用之重复请求取消

    2023-07-02 17:03:21
  • 文件上传服务器-jupyter 中python解压及压缩方式

    2021-06-03 22:32:21
  • node.js中的fs.realpathSync方法使用说明

    2024-05-13 09:59:04
  • python中redis查看剩余过期时间及用正则通配符批量删除key的方法

    2023-08-02 12:12:27
  • 在JAVASCRIPT中LEFT,RIGHT,MID函数的等价函数

    2009-07-21 12:37:00
  • Python并发之多进程的方法实例代码

    2022-04-13 12:43:54
  • MySQL8自增主键变化图文详解

    2024-01-25 19:08:38
  • asp之家 网络编程 m.aspxhome.com