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 相关文章推荐
javascript编程起步(第二课)
Feb 27 Javascript
JavaScript检测上传文件大小的方法
Jul 22 Javascript
js中遍历Map对象的方法
Jul 27 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
浅谈angularjs中响应回车事件
Apr 24 Javascript
老生常谈js数据类型
Aug 03 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
深入研究React中setState源码
Nov 17 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 Javascript
详解angularjs4部署文件过大解决过程
Dec 05 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
PHP原理之异常机制深入分析
2010/08/08 PHP
解析php常用image图像函数集
2013/06/24 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
js function定义函数使用心得
2010/04/15 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
Vue实现按钮级权限方案
2019/11/21 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
flask框架中勾子函数的使用详解
2018/08/01 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python集合是否可变总结
2019/06/20 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
DOM和JQuery对象有什么区别
2016/11/11 面试题
小学生节约用水倡议书
2014/05/15 职场文书