vue router带参数页面刷新或回退参数消失的解决方法


Posted in Javascript onFebruary 27, 2019

写在前面:

传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,本文将会详细介绍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带参数页面刷新或回退参数消失的解决方法

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

vue router带参数页面刷新或回退参数消失的解决方法

注意看上面的路由参数,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传参有什么区别:

vue router带参数页面刷新或回退参数消失的解决方法

1、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>

2、params、query不设置也可以传参,但是params不设置的时候,刷新页面或者返回参数会丢失,query并不会出现这种情况,这一点的在上面说过了

作者原话:首先我针对刷新参数消失想到的方法是在刚开始的时候将参数存到localStorage里面,但是如果这种传参比较多的话可能存储的地方会有点多;

然后再看一些博客的时候提到用vue 的<keep-alive>,即在<router-view>外套一层<keep-alive>实现页面缓存,但是这样确实是不是每一个页面都需要缓存的特别是一些状态之间切换需要流程化更改状态的页面,写上这个就不能实现数据的实时刷新了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQquery的一些使用心得分享
Aug 01 Javascript
jQuery div拖拽用法实例
Jan 14 Javascript
jQuery取得iframe中元素的常用方法详解
Jan 14 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
手机端js和html5刮刮卡效果
Sep 29 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
Feb 05 Javascript
js replace()去除代码中空格的实例
Feb 14 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
JS实现根据数组对象的某一属性排序操作示例
Jan 14 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
Vue页面切换和a链接的本质区别详解
Nov 12 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
react的滑动图片验证码组件的示例代码
Feb 27 #Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 #jQuery
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 #jQuery
spring+angular实现导出excel的实现代码
Feb 27 #Javascript
react native 原生模块桥接的简单说明小结
Feb 26 #Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 #Javascript
小程序hover-class点击态效果实现
Feb 26 #Javascript
You might like
基于mysql的论坛(1)
2006/10/09 PHP
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python深入学习之上下文管理器
2014/08/31 Python
RC4文件加密的python实现方法
2015/06/30 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Python如何读写CSV文件
2020/08/13 Python
台湾三立电视电商平台:电电购
2019/09/09 全球购物
国庆节文艺活动方案
2014/02/03 职场文书
超市创业计划书
2014/04/24 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
公司租房协议书
2014/10/14 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python