vue 刷新页面的几种方法
1、最直接整个页面重新刷新:

// 使用location.reload()方法刷新页面 location.reload() // 使用Vue路由的$router.go()方法刷新当前页面 this.$router.go(0)
这两种都可以刷新当前页面的,缺点就是相当于按ctrl+F5 强制刷新那种,整个页面重新加载,会出现一个瞬间的空白页面,体验不好
2、新建一个空白页面supplierAllBack.vue,点击确定的时候先router.push()跳转到这个空白页,然后在空白页再router.push()跳回去


这个方式,相比第一种不会出现一瞬间的空白页,只是地址栏有个快速的切换的过程,可采用
3、provide / inject 组合 方式是我试过最实用的,下面用项目截图给大家说明下:首先,要修改下你的app.vue

通过声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载,这边定义了
isRouterAlive //true or false 来控制
然后在需要当前页面刷新的页面中注入App.vue组件提供(provide)的 reload 依赖,然后直接用this.reload来调用就行

app.vue 文件内容
<router-view v-if="isRouterAlive"></router-view>
// 引入vue中的provide功能
import {provide} from "vue";
// 定义重新加载函数
function reload () {
// 设置全局数据中的路由存活状态为false
globeData.isRouterAlive = false;
// 在下一个tick中,设置全局数据中的路由存活状态为true
nextTick(function () {
globeData.isRouterAlive = true;
})
}
// 提供reload函数,使其可以在组件中被注入和使用
provide('reload', reload);
在其他组件中使用reload
// 引入vue中的inject功能
import {inject} from "vue";
// 从注入的数据中获取reload函数
let iload = inject('reload');
浙公网安备 33010602011771号