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 相关文章推荐
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
Dec 31 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
详解Backbone.js框架中的模型Model与其集合collection
May 05 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
微信小程序 request接口的封装实例代码
Apr 26 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
Angular中的$watch方法详解
Sep 18 Javascript
Angularjs Promise实例详解
Mar 15 Javascript
微信小程序实现评论功能
Nov 28 Javascript
vue 进阶之实现父子组件间的传值
Apr 26 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之Smarty入门
2007/01/04 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python实现图片拼接的代码
2018/07/02 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
如何解决安装python3.6.1失败
2020/07/01 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
pymysql模块使用简介与示例
2020/11/17 Python
python制作抽奖程序代码详解
2021/01/15 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
中学家长会邀请函
2014/01/17 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书