在APP.vue里弄一个开关
<template>
//APP.vue文件代码
<router-view v-if="RouterRefresh"></router-view>
</template>
<script lang="ts">
import { defineComponent,provide } from 'vue'
export default defineComponent({
name: 'App',
//给其他地方调用这个方法
provide(){
return{
//被调用的方法和名称
Refresh: this.Refresh
}
},
data() {
return {
locale:zhCN,
RouterRefresh: true
}
},
methods: {
Refresh(){
//调用时先把路由关闭再进行打开
this.RouterRefresh = false
this.$nextTick(function(){
this.RouterRefresh = true
})
}
}
})
</script>
在其他组件路由跳转时使用
<template>
<div id="header">
<a-menu-item v-for="item in menu" :key="item.path" @click="toLink(item.path)">
<div>{{item.meta.title[locale]}}</div>
</a-menu-item>
</div>
</div>
</template>
<script lang="ts" setup>
import { computed, inject } from 'vue'
import { useRouter } from 'vue-router'
//引入APP.vue文件命名Refresh调用的方法
const Refreshs = inject('Refresh')
const { locale } = useI18n()
const toLink = (value) =>{
router.push(value)
//路由跳转时调用APP.vue文件命名Refresh这个方法进行路由刷新
Refreshs()
}
</script>