vue踩坑日记之params传递参数问题
作者:闪电松鼠~ 发布时间:2024-05-10 14:19:48
vue踩坑之params传递参数
1.我们都知道 vue中 params传递参数都需要配置占位符 。
2.但是 一定要注意, 重点来了:
如果 /search的占位符没有值的时候, 也就是没有传递params参数时, 是无法跳转到 search组件的,路径会重新定位到 跟组件 /
3. vue 报错
vue-router] missing param for named route "search": Expected "keyword" to be defined
4. 解决方式
在路径的占位符后面添加 一个 ? , 代表 这个params参数可以传递,也可以不传递。
使用params方式传参数据丢失
在vue的组件之间传递数据时,因为不想url上面有?xx=yy的内容出现,所以选择params形式传递参数,正常跳转,好看又方便
问题出现了:突然在刷新跳转之后的页面的时候,页面的数据加载不出来了,仔细一看,原来是路由中携带的参数不见了!! 组件刷新还能导致路由的参数丢失。
Vue-router传递参数的方式说明
query传递参数
query传递参数不会出现路参数丢失的情况,所以不需要做其他的配置,不过缺点就是参数会拼接在url后面: url?xx=yy 这种方式来传递参数,会暴露参数,并且url也有字符上限限制
使用方式:
this.$router.push({path: 'path', query: {id:1}})
获取参数:
this.$route.query.id获取key为id的路由参数
params传递参数
params传递参数是将参数放在route对象中,没有放在url后面,但是会有一个问题,在跳转之后的页面中刷新的时候,会导致当前路由中保存的params的参数丢失
使用方式:
this.$router.push({name: 'name', params:{id:1}})
获取参数:
this.$route.params.id 获取route对象中的Params的参数信息
解决使用params传递参数刷新页面参数丢失
使用params传递参数,参数没有像query那样,拼接在url后面,所以刷新的时候会出现数据丢失,则无法获取到数据
有两种方式可以解决:
1.使用sessionStorage、localStorage
sessionStorage、localStorage根据具体的场景来选择,保存到里面的数据不会在刷新下的时候丢失,不过在移动端,使用微信悬浮窗的时候,部分安卓机型的sessionStorage中的数据会丢失
2.使用params中的路由匹配
使用方式: 在router.js,即匹配路由规则的位置,加上占位符即可
{
? path: '/index/:num/:name',
? name: 'index',
? component: Index
}
params中的参数名称需要和占位符的名称一致即可
获取参数,还是和获取params中参数一致:this.$route.params.name
这样的话,参数就会出现在url中,格式为:url/num/name,这种方式将参数放在url上,刷新的时候才不会丢失数据。
来源:https://blog.csdn.net/Dzb1993/article/details/123141865


猜你喜欢
- 转自微信公众号: Python之禅1.日志简介说到日志,无论是写框架代码还是业务代码,都离不开日志的记录,他能给我们定位问题带来极
- 本文研究的主要是pyqt5简介及安装方法介绍的有关内容,具体如下。pyqt5介绍pyqt5是一套Python绑定Digia QT5应用的框架
- Python中对象的行为是由它的类型 (Type) 决定的。所谓类型就是支持某些特定的操作。数字对象在任何编程语言中都是基础元素,支持加、减
- Jinja2需要Python2.4以上的版本。 安装 按照Jinja有多种方式,你可以根据需要选择不同的按照方式。 使用easy_insta
- 本文实例讲述了Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法。分享给大家供大家参考,具体如下:#!/usr/bin
- 前言:日常工作中,会遇到一些加密的zip文件,但是因为某些原因或者时间过长,密码不知道了。但是zip文件中文件有很重要很必须。那么,我们试一
- Perl的特殊符号@ 数组 &nb
- 将源目录的图片用MD5命名并设定目标目录尝试了一下用 python 实现了一个生成密码的程序。感觉还是比较好上手的。但是那个程序还是非常简单
- golang常用库之-pkg/errors包背景golang自带了错误信息包error只提供了简单的用法, 如errors.New(),和e
- 按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五。从去年的5月份开始,Python3.6
- 2天内的现实new文字 <%if DateDiff("d",rs("date"),date()
- 在我们使用pyCharm编辑器中有一些方法或者库都是需要我们自行安装,下面就来安装一波安装第三方库有俩个方法使用pip命令来进行安装(pip
- 这个效果并不难,要点是位置和比例设置,捕获鼠标位置、判断鼠标位置区域、还有onmouseover事件、onmousemove事件、onmou
- 首先,看看本文所面向的应用场景:我们有一个数据集df,现在想统计数据中某一列每个元素的出现次数。这个在我们前面文章《如何画直方图》中已经介绍
- 如何用JMail同时给多人发信?在ASP中,为什么我在Jmail收件人处指定多个收件人时,像这样:JMail.AddRecipient&nb
- Mysql Cluster概述 MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。&n
- asp使用fso对象遍历目录及目录下的文件代码:<%@ Language=VBScript %><%&
- 如何制作一个文本文件编辑器?我们也来做一个:newdoc.asp<%@ Language=VBScript %&g
- 系统版本: CentOS 7.4Python版本: Python 3.6.1在现在的WEB中,为了防止爬虫类程序提交表单,图片验证码是最常见
- 开发自定义Web框架接收web服务器的动态资源请求,给web服务器提供处理动态资源请求的服务。根据请求资源路径的后缀名进行判断:如果请求资源