刷新当前页面

一, reload 直接刷新页面

window.location.reload();
$router.go(0);

相当于按了 F5, 因此缺点也很明显, 体验感不佳, 因为要加载所有页面资源相对较慢, 比较耗时.

二, Vue Router 刷新当前页面

这个时候, 我们通过 $router.push 一个 refresh 路由的形式实现, 具体步骤如下:

  1. 创建一个vue文件
<template>
<div></div>
</template>
<script setup>
beforeRouteEnter(to, from, next) {
	next(vm => {vm.$router.replace(from.fullPath);});
}
</script>
  1. 在你的路由文件中, 配置上述文件路由, 示例代码:
    routes 数组中直接添加就行]
{
	path: '/refresh',
	name: 'refresh',
	component: () => import('步骤一中创建文件的路径')
},
  1. 在目标位置, 使用 $router.push 上述路由即可, 示例代码:
$router.push({name: 'refresh'});

三, 依赖注入方式实现 (即, provide/inject )

中心思想: 通过 v-if 来切换 router-view 的 显示/隐藏 从而实现重新加载组件的目的. 步骤如下.

  1. 修改 路由出口文件 ( 我测试时是在 App.vue 文件中加的 ), 通过 provide 提供一个刷新方法给后代组件.

注意: 我的Demo中没有测试路由嵌套的场景, 如果你是路由嵌套, 只想刷新嵌套的子路由, 那在这一步修改的就应该是 子路由 出口文件.

核心代码:

<template>
	<div id="app">
		<!-- <router-view></router-view> -->
		<router-view v-if="isRefreshFlag"></router-view>
	</div>
</template>
<script setup>
import { ref, nextTick, provide } from "vue";

const isRefreshFlag = ref(true)
function reloadPage() {
	isRefreshFlag.value = false;
	nextTick(() => {isRefreshFlag.value = true})
}
provide("reloadPage", reloadPage)</script>

后台管理平台Geeker项目刷新(只刷新嵌套的子路由)
Main.vue

// 注入刷新页面方法
<template>
	<router-view v-slot="{ Component, route }">
	 	<component :is="createComponentWrapper(Component, route)" v-if="isRouterShow" :key="route.fullPath" />
	</<router-view>   
</template>
<script setup lang="ts">
	const isRouterShow = ref(true);
	const refreshCurrentPage = (val: boolean) => (isRouterShow.value = val);
	provide("refresh", refreshCurrentPage);
</script>

tab.vue
refresh按钮

<script setup lang="ts">
// refresh current page
const refreshCurrentPage: Function = inject("refresh") as Function;
const refresh = () => {
  setTimeout(() => {
    route.meta.isKeepAlive && keepAliveStore.removeKeepAliveName(route.fullPath as string);
    refreshCurrentPage(false);
    nextTick(() => {
      route.meta.isKeepAlive && keepAliveStore.addKeepAliveName(route.fullPath as string);
      refreshCurrentPage(true);
    });
  }, 0);
};
</script>
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种流行的编程语言,用于开发各种类型的应用程序,包括Web应用程序。要刷新当前页面,可以使用Python中的一些库和框架来实现。 首先,你可以使用Django这样的Web框架。Django是一个强大的框架,它提供了许多功能,包括处理请求和响应。要刷新当前页面,你可以在视图函数中返回一个HTTP响应对象,其中包含刷新当前页面的标头。例如,你可以使用HttpResponseRedirect类返回一个重定向响应,将用户重定向到同一页面。这将导致页面刷新。 另一个方法是使用Flask这样的小型Web框架。Flask是一个灵活的框架,允许你使用自定义的路由函数处理请求。在路由函数中,你可以返回一个特殊的响应对象,例如一个刷新当前页面的重定向响应。你可以使用Flask提供的redirect函数来实现这个目的。 除了使用Web框架,你还可以使用JavaScript刷新当前页面。Python可以与JavaScript进行交互,通过向网页中插入JavaScript代码来实现刷新页面的功能。你可以使用Python的webbrowser库来打开一个新的浏览器窗口,并使用JavaScript代码来刷新当前页面。例如,你可以使用webbrowser库的open函数来打开一个新的浏览器窗口,并使用JavaScript代码location.reload()来刷新页面。 总之,要刷新当前页面,你可以使用Python的Web框架,如Django或Flask,通过返回特定类型的响应对象来实现。你还可以使用Python与JavaScript进行交互,通过向网页中插入JavaScript代码来刷新页面。这些方法可以适用于各种Web应用程序开发场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值