尝试了vue-router重新路由到当前页面但页面并没有进行刷新、用window.reload()、router.go(0)刷新,浏览器重新加载了,体验不好
于是百度到声明reload方法,控制router-view的显示、隐藏
首先在App.vue里声明reload()方法
<template>
<div id="app">
<router-view v-if="isRouterAlive"></router-view>
</div>
</template>
<script>
export default {
name: 'App',
provide(){
return{
reload:this.reload
}
},
data(){
return{
isRouterAlive:true
}
},
methods:{
reload(){
this.isRouterAlive=false
this.$nextTick(function () {
this.isRouterAlive=true
})
}
}
}
</script>
然后在需要的页面注入App.vue组件提供(provide)的 reload 依赖,直接this.reload()进行调用
<script>
export default {
name: 'businessApplication',
inject:['reload'],
data(){
return{
productDetail:{},
form: {
phone:'',
name:'',
state:-1,
page:1,
size:9999
}
}
},
methods:{
initData(){
ApiClient.get('/backend/product/list.do',this.list).then(data => {
this.pagination = data.items
this.total = data.total;
});
},
addBusiness(name){
ApiClient.post('/backend/business/add.do', this.businessAdd).then(() => {
this.reload()
})
},
}
mounted() {
this.initData()
},
activated(){
this.initData()
}
}
</script>
VUE几种页面刷新方法 https://blog.youkuaiyun.com/baidu_39418435/article/details/81538760