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');

posted on 2021-09-13 22:55  完美前端  阅读(2538)  评论(0)    收藏  举报

导航