文章目录

  • 路由的query参数
  • 命名路由
  • 路由的params参数
  • props配置
  • 第三种写法

上一节:Vue 路由的基本使用

路由的query参数

先看效果

我们需要创建一个 Detail.vue 组件,根据点击的消息来展示消息id和标题

创建路由规则,修改 index.js

......
import Detail from "../pages/Detail";
//创建并暴露一个路由器
export default new VueRouter({routes: [{......},{path: '/home',component: Home,children: [{......},{path: 'message',component: Message,children: [{path: 'detail',component: Detail}]}]},]
})

修改 Message.vue 组件

<template><div><ul><li v-for="m in messageList" :key="m.id"><!--跳转路由并携带query参数,to的字符串写法--><!--<router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link>--><!--跳转路由并携带query参数,to的对象写法--><router-link :to="{path:'/home/message/detail',query:{id:m.id,title:m.title}}">{{ m.title }}</router-link></li></ul><router-view></router-view></div>
</template><script>
export default {name: "Message",data() {return {messageList: [{id: "001", title: "消息001"},{id: "002", title: "消息002"},{id: "003", title: "消息003"},]}}
}
</script>

创建 Detail.vue 组件

<template>
<ul><li>消息编号:{{$route.query.id}}</li><li>消息标题:{{$route.query.title}}</li>
</ul>
</template><script>
export default {name: "Detail"
}
</script>

小结
1.传递参数

<!-- 跳转并携带query参数,to的字符串写法-->
<router-link :to=" /home/message/detail?id=666&title=你好">跳转</router-link>
<!--跳转并携带query参数,to的对象写法-->
<router-link
:to="{path:'/home/message/detail',query:{id:666,title:'你好'}"
}>
跳转
</router-link>

2.接收参数

$route.query.id
$route.query.title

命名路由

命名路由就是给路由起名字,可以简化代码,增加 name 属性即可。修改 index.js,给 Detail 增加 name 属性:

在 Message 跳转 Detail 时,代码可以简化为:

<router-link :to="{name:'xiangqing',query:{id:m.id,title:m.title}}">

index.js 中给 about 增加 name 属性

App.vue 中

<!--          <router-link class="list-group-item" active-class="active" to="/about">About</router-link>-->
<router-link class="list-group-item" active-class="active" :to="{name:'guanyu'}">About</router-link>

路由的params参数

首先需要配置 index.js,使用占位符 params 参数

export default new VueRouter({routes: [{......},{path: '/home',component: Home,children: [{......},{path: 'message',component: Message,children: [{name:'xiangqing',path: 'detail/:id/:title',component: Detail}]}]},]
})

Message.vue 中传值,使用字符串写法:

<!--跳转路由并携带params参数,to的字符串写法-->
<router-link :to="`/home/message/detail/${m.id}/${m.title}`">{{m.title}}</router-link>

或者使用对象写法

特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!

<!--跳转路由并携带params参数,to的对象写法--><router-link :to="{name:'xiangqing',params:{id:m.id,title:m.title}}">{{ m.title }}</router-link>

Detail 中取值

  <li>消息编号:{{$route.params.id}}</li><li>消息标题:{{$route.params.title}}</li>

点击消息002时:

props配置

我们关注一个问题,在 Detail 中,我们接收参数时使用 $route.params.id$route.params.title,如果参数很多,会重复写很多次 $route.params.xxx,为了解决这个问题,就用到了 props 配置

修改 index.js,哪里接收参数就在哪里配置

第一种写法

children: [{name:'xiangqing',path: 'detail/:id/:title',component: Detail,//props的第一种写法,值为对象,该对象中的所有key-value都会以props的形式传给Detail组件。props:{a:1,b:"hello"}}
]

接收时使用 props 接收,使用插值语法读出来即可

<template>
<ul><li>{{a}}{{b}}</li>
</ul>
</template><script>
export default {name: "Detail",props:['a','b']
}
</script>

第二种写法

修改 index.js

children: [{name:'xiangqing',path: 'detail/:id/:title',component: Detail,//props的第二种写法,值为布尔值//若布尔值为真,就会把该路由组件收到的所有params参数,以props的形式传给Detail组件props:true}
]

Detail 接收时

<template>
<ul><li>消息编号:{{id}}</li><li>消息标题:{{title}}</li>
</ul>
</template><script>
export default {name: "Detail",props:["id","title"]
}
</script>

第三种写法

第二种写法只适合 params 传参。我们看下第三种写法适合 query。修改 index.js

children: [{name:'xiangqing',path: 'detail/',component: Detail,//props的第三种写法,值为函数props($route){return {id:$route.query.id,title:$route.query.title}}//或简写为结构赋值props({query}){return {id:query.id,title:query.title}}//或接着结构赋值props({query: {id, title}}) {return {id, title}}}
]

Message.vue 中使用 query 传参

<router-link :to="{name:'xiangqing',query:{id:m.id,title:m.title}}">{{ m.title }}
</router-link>

Detail 中接收时仍是同上面一样

<template>
<ul><li>消息编号:{{id}}</li><li>消息标题:{{title}}</li>
</ul>
</template><script>
export default {name: "Detail",props:["id","title"]
}
</script>

小结:路由的props配置
作用:让路由组件更方便的收到参数

{name : 'xiangqing',path : 'detail/:id',component: Detail,//第一种写法: props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件//props:{a: 900}//第二种写法: props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件// props :true//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props(route){return {id : route.query.id,title:route.query.title}}
}

下一节:Vue 编程式路由导航

Vue 路由参数传递相关推荐

  1. (转)一个vue路由参数传递的注意点

    首先我的路由的定义 {path: '/b',name: 'B',component: resolve => require(['../pages/B.vue'], resolve) } 我从A组 ...

  2. vue 传递 对象 路由_vue中路由参数传递可能会遇到的坑

    前言 vue中路由跳转传参数有多种,自己常用的是下面的几种 通过router-link进行跳转 通过编程导航进行路由跳转 本文主要给大家介绍了关于vue路由参数传递遇到的一些坑,分享出来供大家参考学习 ...

  3. vue路由传参的三种方式/含页面刷新参数丢失解决方案(详细)

    vue路由传参的三种方式以及页面刷新参数丢失问题 一.路由传参的三种方式 1.传参方式一:params传参 2.传参方式二:路由属性配置传参 3.传参方式三:query传参 二.三种传递方式的区别 一 ...

  4. 【Vue路由(router)进一步详解】

    Vue路由(router)进一步详解 query属性 具体实例代码如下: params属性 具体实例代码如下: props属性 replace属性 编程式路由导航 路由缓存 具体代码: 总结 本篇文章 ...

  5. Vue路由传参params 与 query

    一.路由传参分为 params 传参与 query 传参 1. params params 传参类似于网络请求中的 post 请求,params 传过去的参数不会显示在地址栏中(但是不能刷新).par ...

  6. Vue路由传参详解(params 与 query)

    Vue路由传参详解(params 与 query) 前言: 路由传参分为 params 传参与 query 传参 params 传参类似于网络请求中的 post 请求,params 传过去的参数不会显 ...

  7. Vue路由(vue-router)详细讲解指南

    中文文档:https://router.vuejs.org/zh/ Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.路由实际 ...

  8. Vue路由(vue-router)

    一.Vue路由的相关概念 1.路由(routing):是指从源到目的地时,决定端到端路径的决策过程. 2.前端路由:即由前端来维护一个路由规则.实现模式有两种.            (1)利用URL ...

  9. vue路由登录拦截器_Vue路由器

    vue路由登录拦截器 介绍 (Introduction) In a JavaScript web application, a router is the part that syncs the cu ...

最新文章

  1. 从刚入职阿里的学弟那里薅来的面试题,速速领取~~~
  2. 0218 图片的添加
  3. 数据库常用面试题(SQL Server) (转载)
  4. html标签自动对齐,sublime,jsx里的html标签自动缩进对齐的插件或者配置?
  5. 管道实现进程间通讯 、WaitNamedPipe
  6. Android开发之百度地图距离判断(判断定位位置是否在圆的范围内)
  7. JSON解析工具比较,主要GSON和FastJSON
  8. android 多个占位符,基于android布局中的常用占位符介绍
  9. Atitit uke证件编码规范与范本
  10. An ac a day,keep wa away
  11. Excel VBA函数和过程调用方法总结(跨文件调用函数和过程)
  12. EastFax 远程调用Ukey助力医学院
  13. 2021强网拟态防御国际精英赛 reverse: babytms
  14. Unity学习心得3
  15. Fiddler功能讲解
  16. Python黑科技:20行Python代码打造一个微信群聊助手
  17. bind blz mysql_MySQL™ 参考手册(通用安装指南)
  18. UnhandledPromiseRejectionWarning: MongoError: command insert requir es authentication
  19. 一、flink基础之数据读取
  20. tailwindcss 官网(六)定制:配置( `tailwind.config.js `、-p、important、核心插件、`resolveConfig`)、主题 `theme` 配置

热门文章

  1. 计算机哈利波特音乐,【拼装延时】LEGO乐高 哈利波特系列 75954 霍格沃茨大礼堂...
  2. 知道创宇研发技能表v3.1
  3. 柯尼卡美能达306i提示更换感光鼓定影单元 清零方法
  4. 一步步蚕食的意思_第800章 一步步蚕食
  5. k型热电偶分度表_热电偶补偿导线
  6. ERNIE: 2.0带来了什么
  7. 『清华ERNIE』 与 『百度ERNIE』 的爱恨情仇
  8. iFixit 拆解 Surface 平板:可维修性不高 (图)
  9. 一加8T 原装65W WARP闪充 充电功率记录
  10. Latex 常用括号类表达式