码迷,mamicode.com
首页 > 其他好文 > 详细

keep-alive实现返回保留筛选条件及筛选结果

时间:2019-12-23 20:38:29      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:view   res   code   哪些   next   子页面   amp   name   false   

实现页面返回时,保留筛选条件和筛选结果

说明

. keep-alive

是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM

实现

结合router实现部分页面缓存

模板应用

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

route通过meta属性配置keepAlive控制当前路由页面是缓存还是非缓存,child表示哪些子页面返回会缓存上一级的页面相关数据

{
  name: 'onePage', // onePage
  path: 'onePage',
  component: onePage,
  meta: {
  requiresAuth: true,
  keepAlive: true,
    child: ['/onePage/detail']
  }
}

给被要被缓存的页面设置beforeRouteLeave,判断是否清除当前页的数据,

  beforeRouteLeave(to, from, next) {
      let child = from.meta && from.meta.child || []
      if (child.indexOf(to.path) === -1) {
        // 非子页面
        this.initData() // 清除data中相关数据
        from.meta.keepAlive = false
      } else {
        // 子页面
        from.meta.keepAlive = true
      }
      next()
    },
    activated () {
      // 更新查询列表数据
      this.getList()
    },

详情页设置beforeRouteLeave

  beforeRouteLeave (to, from, next) {
    // 设置下一个页面的路由,让其列表搜索条件缓存
    if (to.meta) {
      to.meta.keepAlive = true;
      next();
    }
  }

keep-alive实现返回保留筛选条件及筛选结果

标签:view   res   code   哪些   next   子页面   amp   name   false   

原文地址:https://www.cnblogs.com/goddess/p/12088166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!