zoukankan      html  css  js  c++  java
  • keep-alive

    keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。(可以理解为冻结页面)

    使用方法:

    1 <keep-alive>
    2   <component>
    3     <!-- 该组件将被缓存! -->
    4   </component>
    5 </keep-alive>

    props

    • include - 字符串或正则表达,只有匹配的组件会被缓存
    • exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存
    1 // 组件 a
    2 export default {
    3   name: 'a',
    4   data () {
    5     return {}
    6   }
    7 }
    1 <keep-alive include="a">
    2   <component>
    3     <!-- name 为 a 的组件将被缓存! -->
    4   </component>
    5 </keep-alive>可以保留它的状态或避免重新渲染
    1 <keep-alive exclude="a">
    2   <component>
    3     <!-- 除了 name 为 a 的组件都将被缓存! -->
    4   </component>
    5 </keep-alive>可以保留它的状态或避免重新渲染

    router-view 也是一个组件,如果直接被包在 keep-alive 里面,所有路径匹配到的视图组件都会被缓存:

    1 <keep-alive>
    2     <router-view>
    3         <!-- 所有路径匹配到的视图组件都会被缓存! -->
    4     </router-view>
    5 </keep-alive>

    如果只想 router-view 里面某个组件被缓存,怎么办?

    • 使用 include/exclude
    • 增加 router.meta 属性

    使用 include/exclude

    1 // 组件 a
    2 export default {
    3   name: 'a',
    4   data () {
    5     return {}
    6   }
    7 }
    1 <keep-alive include="a">
    2     <router-view>
    3         <!-- 只有路径匹配到的视图 a 组件会被缓存! -->
    4     </router-view>
    5 </keep-alive>

    缺点:需要知道组件的 name,项目复杂的时候不是很好的选择

    增加 router.meta 属性

     1 // routes 配置
     2 export default [
     3   {
     4     path: '/',
     5     name: 'home',
     6     component: Home,
     7     meta: {
     8       keepAlive: true // 需要被缓存
     9     }
    10   }, {
    11     path: '/:id',
    12     name: 'edit',
    13     component: Edit,
    14     meta: {
    15       keepAlive: false // 不需要被缓存
    16     }
    17   }
    18 ]
    1 <keep-alive>
    2     <router-view v-if="$route.meta.keepAlive">
    3         <!-- 这里是会被缓存的视图组件,比如 Home! -->
    4     </router-view>
    5 </keep-alive>
    6 
    7 <router-view v-if="!$route.meta.keepAlive">
    8     <!-- 这里是不被缓存的视图组件,比如 Edit! -->
    9 </router-view>

    优点:不需要例举出需要被缓存组件名称

    世界上没有什么偶然,有的只有必然。——壹原侑子
  • 相关阅读:
    将小度WiFi改造为无线网卡(小度WiFi能够接收WiFi信号)
    百度8秒教育片
    MATLAB r2014a 下载+安装+激活
    lsmod
    ipython与python的区别
    ssh远程登录Ubuntu报错:Permission denied, please try again.
    windows系统安装ubuntu后,grub中没有windows启动项
    面向对象三大特征
    进程和线程
    tar 命令
  • 原文地址:https://www.cnblogs.com/liazhimao/p/14517366.html
Copyright © 2011-2022 走看看