相同路由跳转时,会产生页面不动的状态,所以我们需要一个点击切换类刷新的效果,这种解决方法主要有3个;
但是前2个方案,用户体验略低。
1,整个页面重新刷新;
location.reload()// or ’this.$router.go(0)‘
这两种都可以刷新当前页面的,缺点就是相当于按ctrl+F5 强制刷新那种,整个页面重新加载,会出现一个瞬间的空白页面,体验不好。
2,新建一个空白页面supplierAllBack.vue,点击确定的时候先跳转到这个空白页,然后再立马跳转回来;
这个方式,相比第一种不会出现一瞬间的空白页,只是地址栏有个快速的切换的过程,可采用。
3,provide / inject 组合 方式是我试过最实用的
首先,要修改APP.vue
<template>
<div id="app">
<router-view v-if="isRouterAlive"></router-view>
</div>
</template>
export default {
name: 'index',
provide () {
return: {
reload: this.reload
}
},
data () {
return: {
isRouterAlive: false
}
},
methods: {
reload () {
this.isRouterAlive = false
this.$nextTick(() = > {
this.isRouterAlive = true
})
}
}
}
然后在需要当前页面刷新的页面中注入App.vue组件提供(provide)的 reload 依赖,然后直接用this.reload来调用就行
export default {
name: 'index',
inject: ["reload"],
methods: {
xxx () {
// 需要调用的方法
this.reload()
}
}
}
网友评论