zoukankan      html  css  js  c++  java
  • vue----keep-alive缓存,activated,deactivated两个生命周期函数,,meta实现缓存

    keep-alive缓存(一般都要将首次创建的组件缓存,提高性能
        
    将需要缓存的组件缓存在内存当中,下次再次访问的时候,直接从缓存中读取,而不是重新创建或者销毁……提高了性能

    只要组件会经历创建和销毁(v-if v-show)的时候,都可以使用keep-alive)   如果没有缓存,每点击一次导航,内容区就会创建一个组件,该组件会经历整个生命周期,每点击一次,就会创建一个组件,比较浪费性能
    这时,我们就要考虑到是否能将点击过的已创建的组件进行缓存,当再次点击已访问过的组件时,这时,就会从缓存中获取该组件,而不会重新创建,
    这就用到keep
    -alive 用keep-alive 标签包裹component组件标签 <keep-alive> <component :is="activeCom"></component> </keep-alive>
     
    keep-alive对应两个生命周期,activated(){}    deactivated(){}
     
    当从缓存中读取a组件时,此时a组件处于活跃状态,
    当从缓存中读取b组件时,a组件处于缓存状态,此时b组件处于活跃状态,
     
    用途:
        eg:当在a组件浏览小说到某个位置,这时,我切换到b组件,那么就用a组件的缓存状态函数记录这个位置(),
    当我再次切换到a组件,用活跃状态函数 保存到该位置 activated(){ console.log(
    "活跃状态"); }, deactivated(){ console.log("缓存状态") }

     利用include,exclude属性

    include属性表示只有name属性为bookLists,bookLists的组件会被缓存,
    (注意是组件的名字,不是路由的名字)其它组件不会被缓存exclude属性表示除了name属性为indexLists的组件不会被缓存,其它组件都会被缓存

    <keep-alive include="bookLists,bookLists"> <router-view></router-view> </keep-alive> <keep-alive exclude="indexLists"> <router-view></router-view> </keep-alive>


    利用meta属性

    export default[
     {
      path:'/',
      name:'home',
      components:Home,
      meta:{
        keepAlive:true //需要被缓存的组件
     },
     {
      path:'/book',
      name:'book',
      components:Book,
      meta:{
         keepAlive:false //不需要被缓存的组件
     } 
    ]
    
    <keep-alive>
      <router-view v-if="this.$route.meat.keepAlive"></router-view>
      <!--这里是会被缓存的组件-->
    </keep-alive>
    <keep-alive v-if="!this.$router.meta.keepAlive"></keep-alive> <!--这里是不会被缓存的组件-->
        
  • 相关阅读:
    动态规划法(八)最大子数组问题(maximum subarray problem)
    动态规划法(九)想要更多例子?
    动态规划法(五)钢条切割问题(rod cutting problem)
    MySql排序函数
    Mysql 分组函数查询
    MySql单行函数
    MySql常见的函数
    MySql常见的条件查询
    MySql的一些基础查询
    MySql资料总全
  • 原文地址:https://www.cnblogs.com/SRH151219/p/10416680.html
Copyright © 2011-2022 走看看