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

路由参数保持
本文探讨了在前端开发中使用Vue Router时遇到的问题:当通过params传递参数时,在页面刷新或回退时参数消失的情况。文章提供了解决方案,即使用Query方式传递参数,并介绍了如何接收这些参数。

一、示例:

this.$router.push({  name:'index',params: { id: status},query: { id:  status2 }})

二、问题描述:

       使用params 传递参数,,页面刷新或者回退路由中参数消失

三、解决:

       使用Query 即可解决该问题。

四、接受参数:

this.$route.query.id

 

### Vue3 页面回退带参数的实现方法Vue3 中,页面回退到上一页并携带参数的功能可以通过 `sessionStorage` 或 `query` 参数来实现。以下是一个完整的解决方案: #### 方法一:使用 `sessionStorage` 存储参数 通过 `sessionStorage` 将参数存储在浏览器会话中,并在返回上一页时读取这些参数。 ```javascript // 当前页面(例如编辑页)在跳转前将参数存储到 sessionStorage 中 sessionStorage.setItem('returnParams', JSON.stringify({ key: 'value' })); // 上一页(例如列表页)在加载时从 sessionStorage 获取参数 onMounted(() => { const params = JSON.parse(sessionStorage.getItem('returnParams')); if (params) { console.log('接收到的参数:', params); // 清空 sessionStorage 中的数据 sessionStorage.removeItem('returnParams'); } }); ``` 这种方法的优点是参数不会直接显示在 URL 中,适合传递敏感或复杂的参数[^2]。 --- #### 方法二:使用 `query` 参数传递数据 通过路由的 `query` 参数传递数据,确保参数在 URL 中可见且可以被上一页接收。 ```javascript // 当前页面(例如编辑页)跳转时携带参数 const router = useRouter(); router.push({ path: '/previous-page', query: { key: 'value' } }); // 上一页(例如列表页)通过 useRoute 接收参数 <script setup> import { useRoute } from 'vue-router'; const route = useRoute(); onMounted(() => { const queryParams = route.query; console.log('接收到的参数:', queryParams); }); </script> ``` 这种方法的优点是简单直观,适合传递非敏感的简单参数[^1]。 --- #### 方法三:结合导航守卫实现回退逻辑 如果需要更复杂的回退逻辑,可以结合 `beforeRouteLeave` 和 `beforeRouteEnter` 导航守卫。 ```javascript // 当前页面(例如编辑页)设置导航守卫 <script setup> import { useRouter } from 'vue-router'; const router = useRouter(); const onClickBack = () => { router.go(-1); // 返回上一页 }; </script> // 上一页(例如列表页)通过 beforeRouteEnter 获取数据 <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ beforeRouteEnter(to, from, next) { next((vm: any) => { if (from.query.key) { vm.dataReceived = from.query.key; // 接收参数 console.log('接收到的参数:', vm.dataReceived); } }); }, }); </script> ``` 这种方法适用于需要对回退行为进行控制的场景[^4]。 --- #### 注意事项 1. 如果使用 `params` 而不是 `query`,需要注意刷新页面参数可能会丢失。因此推荐使用 `query` 参数[^3]。 2. 在实际开发中,可以根据需求选择是否清空 `sessionStorage` 或清理 URL 中的参数。 --- ### 示例代码 以下是一个完整的示例,展示如何在 Vue3 中实现页面回退并携带参数: ```javascript // 编辑页:跳转前存储参数 sessionStorage.setItem('returnParams', JSON.stringify({ key: 'value' })); router.go(-1); // 列表页:加载时接收参数 <script setup> import { onMounted } from 'vue'; onMounted(() => { const params = JSON.parse(sessionStorage.getItem('returnParams')); if (params) { console.log('接收到的参数:', params); sessionStorage.removeItem('returnParams'); // 清空参数 } }); </script> ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值