你的問題可能是如何“刷新”當前頁面
當使用路由參數時,例如從/user/foo導航到/user/bar,原來的組件實例會被復用。
因為兩個路由都渲染同個組件,比起銷毀再創建,復用則顯得更加高效。
不過,這也意味著組件的生命周期鉤子不會再被調用。
復用組件時,想對路由參數的變化作出響應的話,$route.push無效,你可以簡單地watch(監測變化)$route對象:
constUser={
template:'...',
watch:{
'$route'(to,from){
//對路由變化作出響應...
}
}
}
或者使用2.2中引入的beforeRouteUpdate導航守衛:
constUser={
template:'...',
beforeRouteUpdate(to,from,next){
//reacttoroutechanges...
//don'tforgettocallnext()
}
}
如何是刷新當前頁面的話可使用先push到一個空頁再push回來,但是這個方案回導致一個空白效果,常用的是再app.vue定義一個reload方法,再子頁面中調用
//app.vue
<template>
<router-viewv-if="isRouterAlive"></router-view>
</template>
<script>
exportdefault{
name:"App",
provide(){
return{
routerReload:this.reload
};
},
data(){
return{
isRouterAlive:true
};
},
methods:{
reload(){
this.isRouterAlive=false;
this.$nextTick(()=>(this.isRouterAlive=true));
}
}
};
</script>
//頁面
exportdefault{
inject:["routerReload"],
methods:{
reload(){
this.routerReload()
}
}
}