zoukankan      html  css  js  c++  java
  • Keep-Alive组件的使用

    使用场景

    组件切换时缓存之前加载的状态不会被销毁,避免反复渲染同时减少网络请求

    使用方式

    • 使用keep-alive中的属性includeexclude,根据组件name判断
    <keep-alive include="test1"><!-- 仅对name为test1的组件缓存 -->
        <router-view></router-view>
    </keep-alive>
    
    • 在路由中配置属性标识是否缓存
    {
      path: '/test1',
      component: Test1,
      meta: {
        keepAlive: true
      }
    },
    {
      path: '/test2',
      component: Test2,
      meta: {
        keepAlive: false
      }
    }
    
    <keep-alive>
        <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
    

    activated和deactivated

    引入了keep-alive的页面具备activated和deactivated钩子函数,页面第一次进入,钩子的触发顺序created-> mounted-> activated,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated,可以通过activated代替mounted执行一些必要的初始化操作;

    清除缓存

    通过路由钩子实现根据下一个页面来判断是否缓存

    /* test1只在到达test2时缓存 */
    beforeRouteLeave(to, from, next) {
        if (from.path==="/test1"&&to.path === "/test2")
            from.meta.keepAlive = true;
        else {
            from.meta.keepAlive = false;
            this.$destroy();
        }
        next();
    }
    

    keep-alive组件生命周期

  • 相关阅读:
    Java容器学习之ArrayList
    Java容器学习之List
    个人感悟
    python_批量修改密码综评
    修改的一段递归文件代码
    showtimu
    20190321xlVBA_明细信息表汇总成数据表
    20190320xlVBA_考场座位设置
    RG
    wdVBA_替换删除选择题括号中的选项
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/13234518.html
Copyright © 2011-2022 走看看