解决vue3 路由query传参刷新后数据丢失的问题

前言:在页面刷新的时候,路由query数据会被清空,网上很多方法说query传参可以实现,反正我是没有实现

思路:将数据保存到本地,通过 " ?" 进行判断是否有数据,页面销毁的时候删除本地的数据

有数据就保存到本地

无数据就获取本地的数据

布置:

1.父组件

const sampleDetailClick = (routerId) => {

router.push({

path: '/informationEntry/specimenDetail',

query: { routerId },

});

};

2.封装公共的处理方法,方便后期使用

export function initRequest(path:any) {

let url = window.location.href.split("?");

if (url[1]) {

localStorage.setItem(url[0], url[1])

const paramsObj = stringToObject(url[1]);

return { isParams: true, paramsObj }

} else{

let params = localStorage.getItem(url[0]) || '';

const newUrl = window.location.origin + window.location.pathname + '?' + params;

window.history.replaceState({}, '', newUrl);

const paramsObj = stringToObject(params);

return { isParams: false, paramsObj }

}

}

引入

复制代码
import { initRequest } from '@/utils/utils.ts'

3.在子组件里面使用

复制代码
import { reactive, ref, onMounted, onBeforeUnmount } from 'vue';
import { initRequest } from '@/utils/utils.ts'
const route = useRoute();
let { id } = route.query;

let currentUrl = window.location.href.split("?");
onMounted(() => {

  const obj = initRequest()
  if (obj) ({ id } = obj.paramsObj);
  openAddModal();  //获取详情
})
onBeforeUnmount(() => { localStorage.removeItem(currentUrl[0]); })

4.刷新验证功能,在本地里面查看

相关推荐
ObjectX前端实验室9 分钟前
【图形编辑器架构】渲染层篇 — 从 React 到 Canvas 的声明式渲染实现
前端·计算机图形学·图形学
java水泥工18 分钟前
基于Echarts+HTML5可视化数据大屏展示-智慧消防大屏
前端·echarts·html5
杨超越luckly21 分钟前
HTML应用指南:利用POST请求获取全国索尼体验型零售店位置信息
前端·arcgis·html·数据可视化·门店数据
ObjectX前端实验室41 分钟前
【图形编辑器架构】节点树篇 — 从零构建你的编辑器数据中枢
前端·计算机图形学·图形学
liuyao_xianhui44 分钟前
四数之和_优选算法(C++)双指针法总结
java·开发语言·c++·算法·leetcode·职场和发展
ikun778g1 小时前
uniapp设置安全区
前端·javascript·vue.js·ui·uni-app
blank@l1 小时前
Python类和对象----实例属性,类属性(这是我理解类和对象最透彻的一次!!)
开发语言·python·python接口自动化基础·python类和对象·python实例属性·python类属性·类属性和实例属性的区别
超奇电子1 小时前
高斯包络调制正弦波的Python代码
开发语言·python
IT_陈寒1 小时前
React Hooks 实战:这5个自定义Hook让我开发效率提升了40%
前端·人工智能·后端
Siren_dream1 小时前
python进阶_Day2
开发语言·python