Vue.js - 路由 vue-router 的使用详解2(参数传递)
一、使用冒号(:)的形式传递参数
1,路由列表的参数设置
import Vue from 'vue'
import Router from 'vue-router'
import index from '@/components/index' //引入首页组件
import hello from '@/components/hello' //引入欢迎页组件 //Vue全局使用Router
Vue.use(Router) export default new Router({
routes: [ //配置路由,使用数组形式
{
path: '/', //链接路径
name: 'index', //路由名称
component: index //映射的组件
},
{
path: '/hello/:id/:userName',
name: 'hello',
component: hello
}
]
})
2,参数的传递
<router-link to="/hello/123/hangge">跳转到 hello</router-link>
this.$router.push("/hello/123/hangge");
3,参数的获取
<template>
<div>
<h1>ID:{{ $route.params.id}}</h1>
<h1>用户名:{{ $route.params.userName}}</h1>
</div>
</template>
4,运行效果

二、使用 query 方式传递参数
1,路由列表
import Vue from 'vue'import Router from 'vue-router'import index from '@/components/index' //引入首页组件import hello from '@/components/hello' //引入欢迎页组件//Vue全局使用RouterVue.use(Router)export default new Router({ routes: [ //配置路由,使用数组形式 { path: '/', //链接路径 name: 'index', //路由名称 component: index//映射的组件 }, { path: '/hello', name: 'hello', component: hello } ]})2,参数的传递
(1)如果使用 <router-link> 组件跳转的话,可以这么携带参数:
<router-link :to="{path:'/hello', query:{id:123, userName:'hangge'}}">
跳转到 hello
</router-link>
(2)如果使用 js 代码跳转的话,可以这么携带参数:
this.$router.push({
path:'/hello',
query:{id:123, userName:'hangge'}
});
3,参数的获取
<template>
<div>
<h1>ID:{{ $route.query.id}}</h1>
<h1>用户名:{{ $route.query.userName}}</h1>
</div>
</template>
4,运行效果

三、使用 params 方式传递参数
1,路由列表
import Vue from 'vue'
import Router from 'vue-router'
import index from '@/components/index' //引入首页组件
import hello from '@/components/hello' //引入欢迎页组件 //Vue全局使用Router
Vue.use(Router) export default new Router({
routes: [ //配置路由,使用数组形式
{
path: '/', //链接路径
name: 'index', //路由名称
component: index//映射的组件
},
{
path: '/hello',
name: 'hello',
component: hello
}
]
})
2,参数的传递
(1)如果使用 <router-link> 组件跳转的话,可以这么携带参数:
<router-link :to="{name:'hello', params:{id:123, userName:'hangge'}}">
跳转到 hello
</router-link>
(2)如果使用 js 代码跳转的话,可以这么携带参数:
this.$router.push({
name:'hello',
params:{id:123, userName:'hangge'}
});
3,参数的获取
<template>
<div>
<h1>ID:{{ $route.params.id}}</h1>
<h1>用户名:{{ $route.params.userName}}</h1>
</div>
</template>
4,运行效果

附:使用 props 实现参数解耦
1,布尔模式
export default new Router({
routes: [ //配置路由,使用数组形式
{
path: '/', //链接路径
name: 'index', //路由名称
component: index //映射的组件
},
{
path: '/hello/:id/:userName',
name: 'hello',
component: hello,
props: true
}
]
})
(2)然后我们页面组件这边不再需要通过 $route.params.xxx 或 $route.query.xxx 来获取传递过来的数据。
<template>
<div>
<h1>ID:{{ id }}</h1>
<h1>用户名:{{ userName}}</h1>
</div>
</template> <script>
export default {
name: 'hello',
props: ['id', 'userName']
}
</script>
2,对象模式
export default new Router({
routes: [ //配置路由,使用数组形式
{
path: '/', //链接路径
name: 'index', //路由名称
component: index //映射的组件
},
{
path: '/hello',
name: 'hello',
component: hello,
props: {
id: 1234,
userName: "hangge"
}
}
]
})
(2)然后页面组件这边获取数据方式和前面一样。
<template>
<div>
<h1>ID:{{ id }}</h1>
<h1>用户名:{{ userName}}</h1>
</div>
</template> <script>
export default {
name: 'hello',
props: ['id', 'userName']
}
</script>
3,函数模式
function dynamicPropsFunc (route) {
return {
message: "欢迎您:" + route.params.userName
}
}
export default new Router({
routes: [ //配置路由,使用数组形式
{
path: '/', //链接路径
name: 'index', //路由名称
component: index //映射的组件
},
{
path: '/hello',
name: 'hello',
component: hello,
props: dynamicPropsFunc
}
]
})
(2)这里假设我们使用 JS 进行跳转,代码如下:
this.$router.push({
name:'hello',
params:{id:123, userName:'hangge'}
});
(3)目标页面组件代码,以及运行结果如下:

<template>
<div>
<h1>{{ message }}</h1>
</div>
</template> <script>
export default {
name: 'hello',
props: ['message']
}
</script>
Vue.js - 路由 vue-router 的使用详解2(参数传递)的更多相关文章
- vue.js基础知识篇(6):组件详解
第11章:组件详解 组件是Vue.js最推崇也最强大的功能之一,核心目标是可重用性. 我们把组件代码按照template.style.script的拆分方式,放置到对应的.vue文件中. 1.注册 V ...
- vue.js基础知识篇(2):指令详解
第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v ...
- Vue.js学习笔记之修饰符详解
本篇将简单介绍常用的修饰符. 在上一篇中,介绍了 v-model 和 v-on 简单用法.除了常规用法,这些指令也支持特殊方式绑定方法,以修饰符的方式实现.通常都是在指令后面用小数点“.”连接修饰符名 ...
- 使用vue.js路由踩到的一个坑Unknown custom element
在配合require.js使用vue路由的时候,遇到了路由组件报错: “vue.js:597 [Vue warn]: Unknown custom element: <router-link&g ...
- [转]Vue项目全局配置微信分享思路详解
这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...
- js 引入Vue.js实现vue效果
拆分组件为单个js见:https://www.jianshu.com/p/2f0335818ceb 效果 html <!DOCTYPE html> <html> <hea ...
- Vue实例初始化的选项配置对象详解
Vue实例初始化的选项配置对象详解 1. Vue实例的的data对象 介绍 Vue的实例的数据对象data 我们已经用了很多了,数据绑定离不开data里面的数据.也是Vue的核心属性. 它是Vue绑定 ...
- Vue.js起手式+Vue小作品实战
本文是小羊根据Vue.js文档进行解读的第一篇文章,主要内容涵盖Vue.js的基础部分的知识的,文章顺序基本按照官方文档的顺序,每个知识点现附上代码,然后根据代码给予个人的一些理解,最后还放上在线编辑 ...
- 最详尽的 JS 原型与原型链终极详解,没有「可能是」。(一)
最详尽的 JS 原型与原型链终极详解,没有「可能是」.(一) 第二篇已更新,点击进入第三篇已更新,点击进入
- JS中的函数节流throttle详解和优化
JS中的函数节流throttle详解和优化在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(mousemove),这种事件有一个特点,在一个正常的操作中,有可能在一个短的 ...
随机推荐
- shell脚本每五分钟执行一次可执行程序(nohup)
两种解决方案:个人推荐第二种,使用crontab来定时执行任务 1.shell代码如下: nohup command &. 解释: 后台永久运行command命令. (nohup表示后台永 ...
- delphi 多线程3
多线程程序设计 我们知道,win95或winNT都是“多线程”的操作系统,在DELPHI .中,我们可以充分利用这一特性,编写出“多线程”的应用程序. 对以往在DOS或16位windows下写程序的 ...
- Nginx拓展功能合集
一:NGINX跨域解决方式 #是否允许请求带有验证信息 add_header Access-Control-Allow-Credentials true; #允许跨域访问的域名,可以是一个域的列表,也 ...
- SSM框架整合思路
SSM框架整合思路 Spring在整合中起到的作用(面试时常问到) Spring管理持久层的mapper. Spring管理业务层的service,service可以调用mapper接口.Spring ...
- shell txt1写入txt2,并放在txt2中指定字符串的后面
# 先找到指定字符串aaa的行号 row=`grep -w -n "aaa" txt2 | cut -d ":" -f 1` # 将txt1中内容写入txt2中 ...
- hql 跟 sql 区别
hql 跟 sql 区别 1.hql与sql的区别 sql 面向数据库表查询 hql 面向对象查询 hql : from 后面跟的 类名+类对象 where 后 用对象的属性做条件 sql: fro ...
- Java 中 Properties 类的操作
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- vmvare下centos7配置静态ip
首先,将网络适配设置成为桥接模式 查看本机IP地址,ipconfig,记住ipv4地址和默认网关地址,等会配置的时候要用 启动Centos,进入终端模式,设置IP地址, 切换到这个目录下,cd /et ...
- 大道浮屠诀---NBU7.7.3_oracle11G单机-单机(异机恢复WINDOWS2008平台)
现有环境说明: 一台WINDOWS2008R2:安装有NBU7.7.3,作为服务端 一台WINDOWS2008R2:安装有oracle11.2.0.3,作为数据库服务器 现假设数据库意外崩溃,需要进行 ...
- pytest-文件名类名方法名执行部分用例
pytest test_class_01.py 执行文件名 pytest -v -s test_class_01.py 执行文件名 pytest -v test_class_01.py::TestCl ...