美文网首页web前端手册
VUE中keepAlive结合路由判断页面是否需要刷新

VUE中keepAlive结合路由判断页面是否需要刷新

作者: 辉夜真是太可爱啦 | 来源:发表于2019-05-23 13:42 被阅读152次

需求:就像是淘宝的商品列表页面跳转到详情页的时候,当返回上一级的商品列表时,肯定是返回上次浏览的位置,不然用户体验很差,还要花时间先翻到上次浏览的位置然后才能继续浏览,解决办法是有,那就是使用keepAlive,但是,随之问题也发生了,你的商品列表页无论怎么变化,还是上次第一次缓存的商品列表页,就会产生问题(因为一般商品列表页都有路由传值,查找特定的商品)。解决办法如下:

首先,在app.vue中使用keepAlive,如果是meta信息里keepAlivetrue,那就包在keep-alive里,不然就是正常的路由,不需要缓存

<keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

然后,你需要在路由中写入metakeepAlive信息,将你需要使用keepAlive的页面的meta设置true

{
    path: '/home',
    name:"Home",
    component: resolve => require(["@/pages/Home"], resolve),
    meta: {
        keepAlive: true, // 不需要缓存
        title:'登录'
    }
},

上面的步骤写好,那么你现在,就已经开启了vuekeepAlive了。

如何解决路由变化不刷新的问题,那就是在router.js中写入路由跳转的判断,意思是如果你是从详情页到商品的详情列表页,那么开启keepAlive,别的情况就不需要缓存,其中,to是即将跳转到的页面,而from是当前页面,如果你还有别的需求,可以在加else if继续写。这样子,就完成了按需的keepAlive

router.beforeEach((to, from, next) => {
 if(to.name==='Home' && from.name==='GoodsDetail'){
    to.meta.keepAlive = true;
  }else{
    to.meta.keepAlive = false;
  }
  next();
});

相关文章

  • VUE中keepAlive结合路由判断页面是否需要刷新

    需求:就像是淘宝的商品列表页面跳转到详情页的时候,当返回上一级的商品列表时,肯定是返回上次浏览的位置,不然用户体验...

  • 路由守卫beforeEach,beforeResolve,aft

    路由守卫常用于路由跳转判断是否需要登录等,如果需要就跳转到登录页面 vue的另外一个钩子函数 beforeEnte...

  • 子路由返回父路由刷新父页面

    子路由页面返回父路由页面,需要刷新数据可以判断路由中的match.isExact属性,true的时候,说明路由定位...

  • Vue中的导航守卫(路由守卫)

    先看官方文档导航守卫就是进行路由拦截,我们可以通过路由拦截,来判断用户是否登录,该页面用户是否有权限浏览,需要结合...

  • vue实现多级路由的思维

    一级路由包含二级路由再包含更多的子路由,需要缓存的页面用keepalive 包括就OK,但是每次回到上级路由,是否...

  • keepAlive使用方法

    vue单页面,多路由,前进刷新,后退不刷新 目的:vue-cli构建的vue单页面应用,某些特定的页面,实现前进刷...

  • vue-router用法

    vue 路由 路由点击跳转不会页面刷新,可以保留数据 安装vue-router:npm install vue-r...

  • Vue路由this.$router.push跳转页面不刷新

    一、背景 介绍:在vue项目开发中,使用路由进行页面跳转时,路由所跳转的页面不进行刷新。也就是vue生命周期函数没...

  • Vue2.0路由是否缓存的方法

    1、在app中设置需要缓存的div 2、在路由router.js中设置.vue页面是否需要缓存 3、从缓存页面跳转...

  • vue前端路由拦截

    起因 在一个vue项目中很多页面是需要登录后才有权限访问的,所以需要在前端做路由拦截判断用户是否可以访问该页面。 ...

网友评论

    本文标题:VUE中keepAlive结合路由判断页面是否需要刷新

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