当前位置: 首页 > news >正文

vue使用路由的query配置项时如何清除地址栏的参数

写vue项目时,如果想通过路由的query配置项把参数从一个组件传到另一个组件,但是又不希望?id=xxx显示在地址栏(如:http://localhost:8080/test?id=xxx的?id=xxx),该怎么做:

举一个案例:

把Movies.vue的hello参数传到Cinemas.vue

在Movies.vue写:

 this.$router.push({name: 'cinemas',query: {hello: 'vue'}
})

在Cinemas.vue写:

解决方案一:清空query的值

created() {console.log("this.$route--->", this.$route);// 方式一:清空query的值this.$router.push({ query: {} });
}

解决方案二:跳转路由时不带query参数

created() {console.log("this.$route--->", this.$route);// 方式二:跳转路由时不带query参数this.$router.push(this.$route.path);
}

最终页面效果如下所示。可以看到,路径没有显示成http://localhost:8080/cinemas?hello=vue,而是显示成http://localhost:8080/cinemas,这就是我们要的效果。

⚠️但这又会产生一个问题,如果是移动端项目还好,如果是pc端项目,当用户点击浏览器地址栏旁的返回箭头时,第一次点击会显示http://localhost:8080/cinemas?hello=vue这个路径,第二次点击才显示回Movies.vue,很明显,这又不是我们想要的效果,我们想要的效果是第一次点击就显示回Movies.vue。

解决方案:当触发popState事件时,跳转到Movies.vue,问题解决。

 created() {this.$router.push(this.$route.path);// 当history对象发生变化时,就会触发popState事件window.addEventListener("popstate", () => {this.$router.push('/movies');});}

http://www.lryc.cn/news/64342.html

相关文章:

  • Redis-列表(List)
  • ripro主题修改教程-首页搜索框美化教程
  • 写作业用白光还是暖光?盘点色温4000K的护眼台灯
  • Java时间类(一)-- SimpleDateFormat类
  • 07 Kubernetes 网络与服务管理
  • 并发编程之Atomic原子操作类
  • 管家婆辉煌Ⅱ 13.32版安装方法
  • 常见的接口优化技巧思路
  • 【Java EE】-使用Fiddler抓包以及HTTP的报文格式
  • Java异步编程
  • C++类与对象(二)——构造函数与析构函数
  • c++标准模板(STL)(std::array)(四)
  • vue3计算属性
  • Java 中的访问修饰符有哪些(九)
  • HR员工管理的三重境界:管事、管人、管心
  • 延迟队列与SpringBoot实战
  • 【算法】九键输入法
  • jvm之类加载器
  • Chapter4:频率响应法(上)
  • 【6. 激光雷达接入ROS】
  • Java 基础进阶篇(三)—— 面向对象的三大特征之二:继承
  • [angstromctf 2023] 部分
  • 死信队列
  • 基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)
  • 使用ChatGPT工具阅读文献的实战教程
  • 实训笔记1
  • CCD视觉检测设备如何选择光源
  • 基于协同过滤的旅游推荐系统设计与实现(论文+源码)_kaic
  • 代码随想录补打卡 746 使用最小花费爬楼梯
  • 有理函数的不定积分习题