功能需求讲解:
在vue-cli项目中,通常会去刷新页面,一般我们比较暴力的刷新页面的方法为location. reload(),直接将整个页面进行了刷新,
这种方法虽然也达到了效果,但是用户体验却不是很好,我们要的效果只是将当前页面进行刷新。
这里推荐使用provide / inject 组合的方法来进行局部页面来进行刷新
具体实现步骤如下:
一、在App.vue页面中定义刷新的方法

二、在使用的页面中进行调用

具体代码如下
App.vue代码
<template>
<div id="app">
<router-view v-if="isRouterAlive"/>
</div>
</template>
<script>
export default {
name: 'App',
provide () {
return {
reload: this.reload
}
},
data () {
return {
isRouterAlive: true
}
},
mounted () {
},
methods: {
reload () {
this.isRouterAlive = false
this.$nextTick(function () {
this.isRouterAlive = true
})
}
}
}
</script>
使用的子页面代码
<template>
<div class="shop">
<button @click="re">123</button>
</div>
</template>
<script>
export default {
name: 'shop',
inject: ['reload'],
data () {
return {
}
},
mounted () {
console.log('重新加载了当前页面')
},
methods: {
re () {
this.reload()
}
}
}
</script>
这样就实现了局部刷新页面的效果,可以在定义的方法中加入加载动画,增强用户体验。