1.在App.vue中作如下修改
1.在router-view标签中添加v-if
<template>
<div id="app">
....
<router-view v-if="isRouterAlive"></router-view>
</div>
</template>
2.在data(){return{}}里定义v-if绑定的变量
data() {
return {
isRouterAlive:true //控制视图是否显示的变量
};
},
3.methods里面加入一个刷新的方法
reload(){
this.isRouterAlive = false; //先关闭,
this.$nextTick(function () {
this.isRouterAlive = true; //再打开
});
}
4.在export default下定义provide方法
export default {
name: 'App',
provide(){ //父组件中通过provide来提供变量,在子组件中通过inject来注入变量
return {
reload:this.reload,
}
},
data() {
return {
...
};
},
methods: {
...
},
}
2.在需要刷新的页面上作如下修改
1.在export default下注入provide里的方法
export default{
name:'My',
inject:['reload'], //注入App里的reload方法
data(){
return{
...
};
},
methods:{
...
},
created(){
}
}
2.在有需要的地方调用如下方法
refresh () {
this.reload()
}
即可完成刷新页面且不会出现闪烁