使用$router.push传值跳转页面 在页面刷新时传值数据丢失问题 解决

本文介绍了解决使用vue-router在页面跳转时params参数丢失的问题,通过sessionStorage实现数据在页面刷新后的持久化存储。方法包括设置、获取和清除数据,以及将对象转换为字符串。欢迎交流更优实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用$router.push 跳转页面时,如果是params传递参数,则刷新页面后,传入的参数丢失 传值失效。
解决办法:可以使用sessionStorage在进入该页面时进行数据存储。
sessionStorage使用方法:
存值方法 sessionStorage.setItem('key','value')
取值方式 sessionStorage.getItem('key')
sessionStorage 清除方法 sessionStorage.removeItem('key')
清除所有数据 sessionStorage.clear()
转换字符串:sessionStorage.setItem("key",JSON.stringify(obj)) JSON.parse(sessionStorage.getItem("key"))

关于这个问题如有更好的方法,欢迎大家讨论。

### Vue.js 中 `this.$router.push` 的参数递与路径拼接 在 Vue.js 中,`this.$router.push` 是一种用于导航到新页面的方法。它支持多种方式来实现路径跳转参数递。 #### 路径模式下的参数递 当使用字符串形式指定目标路径时,可以通过 URL 查询字符串的方式参数。例如: ```javascript this.$router.push('/user?name=JohnDoe&age=30'); ``` 在这种情况下,查询参数会被附加到 URL 后面,并可通过 `$route.query` 获取这些参数[^2]。 #### 命名路由模式下的参数递 如果定义了命名路由,则可以利用对象的形式进行更灵活的参数递。以下是两种常见的场景及其对应的代码示例: 1. **通过 `params` 递动态参数** 动态参数不会显示在最终的 URL 地址栏中,而是存储于内部状态里。这种方式适用于需要隐藏某些敏感数据的情况。 ```javascript this.$router.push({ name: 'UserProfile', params: { userId: 123 } }); ``` 子组件接收该参数时需访问 `this.$route.params.userId` 来读取具体。 2. **结合 `query` 和 `params` 使用** 如果希望既保留可见性的查询参数又拥有不可见的额外信息,可混合两者一并发送请求。 ```javascript this.$router.push({ name: 'SearchResults', query: { q: 'Vue Router' }, params: { category: 'frameworks' } }); ``` 上述例子展示了如何在一个复杂的业务逻辑下合理分配不同类型的变量位置[^3]。 #### 利用编程式导航完成路径拼接 除了直接写死完整的链接地址外,还可以借助模板字符串或者 JavaScript 表达式的计算能力来自动生成目标地址串。比如基于现有条件动态构建多级分类结构的产品详情页入口: ```javascript const categoryId = 45; const productId = 987; // 方法一:简单连接符操作 let targetPathA = `/category/${categoryId}/product/${productId}`; this.$router.push(targetPathA); // 方法二:采用 ES6 Template Literals 提升可读性 let targetPathB = `${process.env.BASE_URL}catalogue/${encodeURIComponent(categoryName)}/${itemId}`; this.$router.push({ path: targetPathB }); ``` 以上两段脚本分别演示了基础语法糖的应用以及考虑环境配置文件兼容性的高级技巧[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值