vue刷新当前页面时,会出现空白,感觉很不好。解决的方式是用provide / inject
组合的方法
此方法使用的是v-if
来控制router-view
的显示或隐藏,v-if从false变为true时
,vue会重新渲染router-view
区域,所以当参数变化时,只需让v-if
从true => false => false
,就能实现页面刷新;
第一步,修改app.vue文件,如下面的方式
<template>
<div id="app">
<router-view v-if="isAlive"></router-view>
</div>
</template>
<script>
export default {
name: 'app',
provide() {
return {
reload: this.reload
}
},
data() {
return {
isAlive: true
}
},
methods: {
reload() {
this.isAlive = false;
this.$nextTick(function () {
this.isAlive = true
})
}
}
}
</script>
第二步,在想要刷新的vue页面引入inject,刷新的时候调用reload方法
export default {
inject: ['reload'],
methods: {
// 刷新
onRefresh () {
setTimeout(() => {
this.reload(); // 在想要刷新页面的时候调用reload方法
this.$toast('刷新成功')
this.isLoading = false
}, 500)
},
}
}