解决$router.go(-1)返回上一层页面不刷新页面问题
生活随笔
收集整理的這篇文章主要介紹了
解决$router.go(-1)返回上一层页面不刷新页面问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原因:頁面沒有跳轉過去,但網址已經跳轉過去了,這個原因是因為他沒有進行緩存,所以頁面沒有進行及時的渲染。
方案一
//先在router/index.js中添加路由元信息,設置需要緩存的頁面 routes: [{path: '/',name: 'index',component: index,meta: {keepAlive: false, //此組件不需要被緩存}},{path: '/page1',name: 'page1',component: page1,meta: {keepAlive: true, //此組件需要被緩存}},{path: '/page2',name: 'page2',component: page2,meta: {keepAlive: true, // 此組件需要被緩存}},{path: '/page3',name: 'page3',component: page3,meta: {keepAlive: false, // 此組件不需要被緩存}} ]?
然后在vue中改寫<router-view> 加一個路由參數判斷
<keep-alive><router-view v-if="$route.meta.keepAlive"><!-- 這里是會被緩存的視圖組件,比如 page1,page2 --></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"><!-- 這里是不被緩存的視圖組件,比如 page3 --> </router-view>?
方案二
可以在點擊跳轉頁面之前,獲取當前的路由,記錄下來,然后指定跳轉
1、store里怎么寫和怎么取就不贅述了,beforenter...等方法看自己使用需求了,下面用的beforeEach
beforeEach router.beforeEach((to,from,next) => {if(to.meta.gorouter){ //判斷該路由是否需要權限Store.commit("setFromRouter", from) //路由跳轉前記錄上一級路由next()}else{next({path:'/login',query:{redirect:to.fullPath} //將該路由path傳入login頁面,登陸成功后跳轉到該頁面})}}else{Store.commit("setFromRouter", from) //路由跳轉前記錄上一級路由next()} })?
在vue中需要返回的方法里這樣調用就行
this.$router.push(this.FromRouter).then(r => {})this.FromRouter來源與所在組件的computed計算屬性
computed: { FromRouter: function(){ return this.$store.getters.getFromRouter} },總結
以上是生活随笔為你收集整理的解决$router.go(-1)返回上一层页面不刷新页面问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 搭建 LAMP服务器
- 下一篇: 非常强大的时间日期插件 --- JeDa