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

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例子类似

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文基于 Vue2.0 keep-alive 简介 keep-alive 是 Vue 内置的一个组件,可以使被包含...
    於風聽語阅读 148,679评论 47 268
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 我不学医,专业也和医学不搭界,只是文傻一枚。除了退休的爷爷奶奶曾当过神经外科医生,家里也没有从医的人士。可是我的身...
    李子李子短信阅读 927评论 2 17
  • 昨天去小姨家吃饭,我表弟的女朋友也去了,期间小姑娘和表弟之间互动还是挺默契的的。 今天小姨打来电话,问我们...
    初夏Lena阅读 302评论 4 0
  • 我最近就先不说了,see you 简
    淳溪阅读 109评论 0 0