美文网首页
keep-alive,实现前进刷新,后退不刷新

keep-alive,实现前进刷新,后退不刷新

作者: 红叶楠飞 | 来源:发表于2018-05-21 00:22 被阅读0次

keep-alive,实现前进刷新,后退不刷新

const router = new Router({
  routes:[
    {
      path:'/login',
      component:Login,
      meta: {
        keepAlive:true
      }
    },
    {
      path:'/login/server',
      component:Server,
      meta:{
        keepAlive:true
      }
    },
    {
      path:'/login/server/main',
      component:Main,
      meta:{
        keepAlive:true
      }
    }
  ]
})

由于这三个界面path的层级不同,我就能通过beforeEach这个钩子判断出什么时候是后退了。在后退时将from路由的keepAlive置为false,to路由的keepAlive置为ture。###

router.beforeEach((to, from, next) => {
const toDepth = to.path.split('/').length
const fromDepth = from.path.split('/').length
if (toDepth < fromDepth) {
console.log('后退。。。')
from.meta.keepAlive = false
to.meta.keepAlive = true
}
next()
})

最后需要缓存的界面用keep-alive包起来,就能实现时前进刷新,后退时不刷新的效果了###

<keep-alive>
   <router-view v-if="$route.meta.keepAlive">
  <!-- 这里是会被缓存的视图组件 -->
   </router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive">
   <!-- 这里是不被缓存的视图组件 -->
</router-view>

使用include/exclude

// 组件 a
export default {
name: 'a',
data () {
return {}
}
}

<keep-alive include="a">
<router-view>
    <!-- 只有路径匹配到的视图 a 组件会被缓存! -->
</router-view>
</keep-alive>

exclude例子类似

相关文章

网友评论

      本文标题:keep-alive,实现前进刷新,后退不刷新

      本文链接:https://www.haomeiwen.com/subject/zrpxjftx.html