vue 中的动态传参和query传参操作


Posted in Javascript onNovember 09, 2020

Vue router 如何传参

params、query 是什么?

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

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

query 方式传参和接收参数

传参: this.$router.push({ path:'/xxx' query:{ id:id } }) this.$router.push 传参时, 并不会引起页面刷新。需要重新请求数据,代码如下。

<div>shopName:{{shop.shopName}}</div>
export default{
 data(){
  return {
   shop:{shopName:"shopName"},
   shopNo:"123"
  };
 },
 mounted(){
  // 初始时加载店铺数据
  this.loadShop();
 },
 watch:{
  // shopNo改变时重新加载
  shopNo:function(newShopNo){
   this.loadShop();
  }
 },
 methods:{
  loadShop(){
   // 调用API获取shop数据
   var shop = {/*获取到的数据*/};
   this.shop=shop;
  }
 }
}

接收参数: this.$route.query.id

params 方式传参和接收参数

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

vue 中的动态传参和query传参操作

传参: this.$router.push({ name:'xxx' params:{ id:id } })

接收参数: this.$route.params.id

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

query 传参和 params 传参的区别

用法上的: query 要用 path 来引入,params 要用 name 来引入,接收参数都是类似的,分别是 this.$route.query.name 和 this.$route.params.name。注意接收参数的时候,已经是$route 而不是$router 了哦!!

展示上的: query 更加类似于我们 ajax 中 get 传参,params 则类似于 post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示所以两者不能同时使用!!!

router-link 和编程式导航两种跳转方式

通过 router-link 我们可以向路由到的组件传递参数,这在我们实际使用中时非常重要的。

编程式导航

vue 中的动态传参和query传参操作

router.push

router.replace 和 router.push()不同,使用 router.replace()会将一个访问记录 push 到 url 中,所以再退回了的时候一定会回到这里,而 router.replace()不是添加一个新的进入,而是替换栈顶元素,这样,在返回的时候,就会返回到栈顶元素的下面一个。

router.go

在浏览器记录中前进一步,等同于 history.forward() router.go(1)

后退一步记录,等同于 history.back() router.go(-1)

动态传参之坑

注意:params 传参,push 里面只能是 name:'xxxx',不能是 path:'/xxx',因为 params 只能用 name 来引入路由,如果这里写成了 path,接收参数页面会是 undefined!!!

补充知识:vue三种动态传参的方式

如下场景:

<el-table-column
  label="操作">
  <template slot-scope="scope">
   <el-button size="mini" type="primary" @click="goList(scope.row.id)">个人信息表</el-button>
  </template>
 </el-table-column>

.直接占位符的方式

goList(id){ 
 this.$router.push({path:`/line/${id}`}) 
}

需要对应路由配置如下:

{
  path:'/line/:id',
  name:'line',
  component:line
  }

二、通过路由属性中的name来确定匹配的路由,通过params来传递参数

goList(id){ 
  this.$router.push({ name:"line",params:{ orderId:id }}) 
}

对应路由配置如下:

{
  path:'/line',
  name:'line',
  component:line
}

三、通过 path来匹配路由,然后通过query来传递参数,传递的参数会暴露在地址栏中

goList(id){ 
 this.$router.push({ path: '/line',query: { orderId:id }})
}

对应路由配置同二

以上这篇vue 中的动态传参和query传参操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
javascript 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
May 10 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
js预加载图片方法汇总
Jun 15 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
Vue 监听元素前后变化值实例
Jul 29 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
Jan 18 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 #Javascript
在vue中使用eslint,配合vscode的操作
Nov 09 #Javascript
原生JavaScript实现五子棋游戏
Nov 09 #Javascript
Nuxt的动态路由和参数校验操作
Nov 09 #Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 #jQuery
JS实现炫酷轮播图
Nov 15 #Javascript
JS实现购物车基本功能
Nov 08 #Javascript
You might like
虫族 ZERG 概述
2020/03/14 星际争霸
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
青年文明号口号
2014/06/17 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers