2019-10-12 - Vue - keep-alive

源自:https://cn.vuejs.org/v2/guide/index.html

1. 基本用法

<template>
     <div id="app">

        <keep-alive>

            <router-view></router-view>

        </keep-alive>

        <!--这里是其他的代码-->

    </div>

</template>

2. 实现部分缓存

1. component:

<template>

    <div id="app">

    <!--缓存想要缓存的页面,实现后退不刷新--> <!--加上v-if的判断,可以自定义想要缓存的组件,自定义在router里面-->

     <keep-alive>

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

    </keep-alive>

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

    <!--这里是其他的代码-->

    </div>

</template>

2. router file

import Vue from 'vue'
import Router from 'vue-router'
 Vue.use(Router)
export default new Router({
 {
    //home会被缓存
     path:"/home",
     component:home,
     meta:{keepAlive: true}
 } {
    //hello不会被缓存
     path:"/hello",
     component:hello,
     meta:{keepAlive: false}
 }
})

3. Props

include - 字符串或正则表达式。只有名称匹配的组件会被缓存。

exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。

max - 数字。最多可以缓存多少组件实例。

例子:

include 和 exclude 属性允许组件有条件地缓存。二者都可以用逗号分隔字符串、正则表达式或一个数组来表示:

<!-- 逗号分隔字符串 -->

<keep-alive include="a,b">

    <component :is="view"></component>

</keep-alive>

<!-- 正则表达式 (使用 `v-bind`) -->

<keep-alive :include="/a|b/">

    <component :is="view"></component>

</keep-alive>

<!-- 数组 (使用 `v-bind`) -->

<keep-alive :include="['a', 'b']">

    <component :is="view"></component>

</keep-alive>

max 最多可以缓存多少组件实例。一旦这个数字达到了,在新实例被创建之前,已缓存组件中最久没有被访问的实例会被销毁掉。

<keep-alive :max="10"> <component :is="view"></component></keep-alive>

注:

1. 在 2.2.0 及其更高版本中,activated 和 deactivated 将会在 <keep-alive> 树内的所有嵌套组件中触发。

2.注意,<keep-alive> 是用在其一个直属的子组件被开关的情形。如果你在其中有 v-for 则不会工作。如果有上述的多个条件性的子元素,<keep-alive> 要求同时只有一个子元素被渲染。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容