vue router使用query和params传参的使用和区别


Posted in Javascript onNovember 13, 2017

写在前面:

传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,本文将会详细介绍vue router 是如何进行传参的,以及一些小细节问题。有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家。

Vue router如何传参

params、query是什么?

params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params

query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。

路由界面:

router.js:

路由设置这里,当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。

vue router使用query和params传参的使用和区别 

注意:如果路由上面不写参数,也是可以传过去的,但不会在url上面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会丢失(如下图所示),那依赖这个参数的http请求或者其他操作就会失败。

vue router使用query和params传参的使用和区别 

注意看上面的路由参数,id这个参数是我们有设置在路由上面的,id2我没有设置在路由里面,所以刷新之后id2就不见了,在项目中,我们总不可能要求用户不能刷新吧。

组件1:

<template>
 <div class="app_page">
 <h1>从这个路由传参到别的路由</h1>
 <router-link :to="{ name:'router1',params: { id: status ,id2: status3},query: { queryId: status2 }}" >
  router-link跳转router1
 </router-link>
 </div>
</template>
<script>
export default {
 name: 'app_page',
 data () {
 return {
  status:110,
  status2:120,
  status3:119
 }
 },
}
</script>

编程式导航跳转:

上面的router-link传参,也可以使用router文档里面的编程式导航来跳转传参。

this.$router.push({ name:'router1',params: { id: status ,id2: status3},query: { queryId: status2 }});
//编程跳转写在一个函数里面,通过click等方法来触发

这两种传参效果是一模一样的,编程式导航,可以用来做判断跳转,比如是否授权,是否登录,等等状态,对此不太了解的小伙伴们,可以跳过这个编程式导航,以后再来看。

组件2:

<template>
 <div class="router1">
 <h1>接收参数的路由</h1>
 <h1> params.id:{{ $route.params }}</h1>
 <h1>query.status:{{ $route.query.queryId }}</h1>
 <keep-alive>
  <router-view></router-view>
 </keep-alive>
 </div>
</template>

传参还是比较简单的,按着上面组件的使用方法就可以成功传过去了。

提示:获取路由上面的参数,用的是$route,后面没有r。

params传参和query传参有什么区别: 

1、用法上的

刚query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this.$route.query.name和this.$route.params.name。

注意接收参数的时候,已经是$route而不是$router了哦!!

2、展示上的

query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示

query:

vue router使用query和params传参的使用和区别      

params:vue router使用query和params传参的使用和区别

3、params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。

params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

比如:跳转/router1/:id

<router-link :to="{ name:'router1',params: { id: status}}" >正确</router-link>
<router-link :to="{ name:'router1',params: { id2: status}}">错误</router-link>

4、params、query不设置也可以传参,params不设置的时候,刷新页面或者返回参数会丢失,这一点的在上面说过了

后话:

本文到这里就结束了,写的不好的地方,请各位大佬们见谅。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在线游戏大家来找茬II
Sep 30 Javascript
各种页面定时跳转(倒计时跳转)代码总结
Oct 24 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
chrome下img加载对height()的影响示例探讨
May 26 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
js无法获取到html标签的属性的解决方法
Jul 26 Javascript
字太多用...代替的方法(两种)
Mar 15 Javascript
微信小程序实现打卡日历功能
Sep 21 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
Jul 22 Javascript
vuejs实现下拉框菜单选择
Oct 23 Javascript
vue+vue-validator 表单验证功能的实现代码
Nov 13 #Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 #jQuery
Angular实现表单验证功能
Nov 13 #Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 #Javascript
Vue.js用法详解
Nov 13 #Javascript
利用HBuilder打包前端开发webapp为apk的方法
Nov 13 #Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 #Javascript
You might like
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
axios学习教程全攻略
2017/03/26 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
用Python的urllib库提交WEB表单
2009/02/24 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
django框架自定义用户表操作示例
2018/08/07 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
企业年度评优方案
2014/06/02 职场文书
音乐教师求职信
2014/06/28 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS