京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

vue3页面query参数变化并重新加载页面数据方式

2024-11-3 11:39| 发布者: 284cc| 查看: 41| 评论: 0

摘要: 目录一、业务场景二、实现方式三、发现题目延伸:(keep-alive)总结一、业务场景 列表页携带id跳转到详情页,id发生变化重新加载当前页面。 跳转分两种情况,假设A页面是id为1111的详情页,B页面是id为2222的详情页
目录

一、业务场景

列表页携带id跳转到详情页,id发生变化重新加载当前页面。

跳转分两种情况,假设A页面是id为1111的详情页,B页面是id为2222的详情页。

  • 第一种,A页面跳转到B页面,B页面返回时直接返回列表页。
  • 第二种,A页面跳转到B页面,B页面返回时返回A页面,A页面再返回返回到列表页。

二、实现方式

焦点方法: $router.push $router.replace

A页面跳转到B页面的方法:

  • 第一种情况:
[code] import { useRouter } from 'vue-router' const router = useRouter() router.replace({ path: '/eFileManagement/company/collection/detail', query: { id: '2222' } })[/code]
  • 第二种情况:
[code] import { useRouter } from 'vue-router' const router = useRouter() router.push({ path: '/eFileManagement/company/collection/detail', query: { id: '2222' } })[/code]

三、发现题目

到第二步,我们必要的功能就已经实现了,但是会发现地址栏id是变化了,页面数据却并没有革新,这时我们给App.vue里的router-view标签添加一个key值即可

如下:

[code]<router-view :key="routerKey"></router-view>[/code] [code]import { useRoute } from 'vue-router' const route = useRoute() const routerKey = computed(() => { return route.path + Math.random() })[/code]

OK!

延伸:(keep-alive)

如果router-view在keep-alive标签下,那么必要再给router-view加个状态值,用来控制router-view表现隐蔽,而且provide注入,方便页面中调用。

App.vue:

[code]<router-view :key="routerKey" v-if="isAlive"></router-view>[/code] [code]import { ref, provide, nextTick } from 'vue' const isAlive = ref<boolean>(true) function reload() { isAlive.value = false nextTick(() => { isAlive.value = true }) } provide('reload', reload)[/code]

A页面里:

[code]import { inject } from 'vue' const reload:any = inject('reload')[/code]

然后在push或者replace方法后调用reload方法。

[code] import { useRouter } from 'vue-router' const router = useRouter() router.push({ path: '/eFileManagement/company/collection/detail', query: { id: '2222' } }) reload()[/code]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。


来源:https://www.jb51.net/javascript/328977mrz.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 03:34 , Processed in 0.032387 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部