Vue3中路由跳转之后删除携带的query参数

news/2024/12/25 22:43:21/

场景

今天在开发时遇到一个需求,需要页面跳转后,将路由携带的参数输入搜索框进行筛选,筛选条件回显后产生了一个问题,刷新页面筛选条件会一致存在,因为在页面挂载时将路由上的query参数赋值给了筛选条件,需求其实只需要第一次跳转时携带条件即可。这时候我打开百度查询,很轻易的写出了下面一段有毒的代码。

onMounted(){const query = route.queryform[key] = query[key]delete query[key] // key为要删除的路由参数router.replace({query})
}

然后就是保存,页面跳转,刷新。什么情况,路由参数为什么还在,于是在delete语句下面添加打印语句

...
console.log(query) // {} query上的参数确实是删除了

然后就是继续百度,搜出来的结果跳转都是使用的router.push跳转的页面,我这儿使用的是window.open打开新的页面,重试了几次,还是没能删除路由参数。思考了一下,觉得一定是window.open的问题,于是换了一种实现方式,使用localStorage携带参数,新页面接收到参数后再删除localStorage中的数据。测试了一下,很完美,没有任何问题,提代码,然后就被打回来了,不能滥用localStorage。继续百度,发现别人用的都是delete query[key]。对比一下发现了问题,问题出在query参数的定义上,其他文章用的都是解构赋值,而不是直接将route.query直接赋值,修改后果然删除了路由参数。

const query = {...route.query} // 这儿一定不能直接赋值

仔细一想也是这个道理,query是一个对象,直接进行赋值是对象的浅拷贝,删除query上的参数,route.query上仍然存在,而解构赋值虽然不是深拷贝,但是结构赋值在进行一维数组或对象时,其本质是对基本数据类型进行等号赋值,可以看做是深拷贝。所以使用router.repalce({query})能够删除路由携带的参数,因为query上已删除了。


http://www.ppmy.cn/news/1558100.html

相关文章

时钟抖动定义和测量方法

1. 简介 抖动是一组信号边沿与其理想值的时序变化。时钟信号中的抖动通常是由系统中的噪声或其他干扰引起的。影响因素包括热噪声、电源变化、负载条件、设备噪声以及附近电路耦合的干扰。 2. 抖动的类型 抖动可以通过多种方式测量。以下是抖动的主要类型: 周期…

Win10系统下:启动若依3.8.8版本的前后端框架

本文章参考了该博主写的文章,安装及其他详情见链接:若依安装教程(保姆级教程) 下面重点写启动前后端走的弯路,顺序一定是 先启动Redis,运行vue框架,先数据库,再后端,最后…

Docker搭建YesPlayMusic云音乐播放器并实现异地远程连接播放歌曲

文章目录 前言1. 安装Docker2. 本地安装部署YesPlayMusic3. 安装cpolar内网穿透4. 固定YesPlayMusic公网地址 前言 本文主要介绍如何在本地Linux服务器快速搭建 YesPlayMusic 云音乐播放器,并结合 cpolar 内网穿透工具实现随时随地远程访问局域网内的音乐播放器&am…

设计模式-创建型模式-简单工厂模式详解

简单工厂模式 简介 简单工厂模式 : Simple Factory Pattern 是一种创建型设计模式 。 通过一个工厂类,封装了对象的创建逻辑。 客户端使用时不需要通过 new 的方式进行对象的创建,而是直接调用工厂类中的方法获取对象。 应用场景 场景介绍 …

怎样配备公共配套设施,才能让啤酒酿造流程高效环保?

今天,天泰邀请大家和我一起走进啤酒厂,了解水、蒸汽、压缩空气和二氧化碳这些基础设施如何助力啤酒生产,实现高效与环保的完美结合。 水 水是啤酒酿造的基础,啤酒厂对水质的要求极高。为了确保水质达标,啤酒厂设有专…

2、C#基于.net framework的应用开发实战编程 - 设计(二、二) - 编程手把手系列文章...

二、设计; 二.二、设计用户界面; 这个编程例子主要用的Visual Studio 2022开发的,所以此文记录VS 2022的UI界面设计过程。 1、 窗体; 1) 此例子的窗体主要是便签窗体; 主要是便签的内容保存。还有一个标题…

【JavaEE进阶】@RequestMapping注解

目录 📕前言 🌴项目准备 🌲建立连接 🚩RequestMapping注解 🚩RequestMapping 注解介绍 🎄RequestMapping是GET还是POST请求? 🚩通过Fiddler查看 🚩Postman查看 …

如何详细地遵循RustDesk的步骤来搭建远程访问和自定义服务器?

要详细地遵循RustDesk的步骤来搭建远程访问和自定义服务器,你可以按照以下几个主要步骤进行操作: 下载并安装RustDesk:前往RustDesk的官方网站(https://rustdesk.com/)下载适用于你的操作系统的安装程序。然后&#xf…