vue 中 keep-alive 组件的作用

简介: vue 中 keep-alive 组件的作用

keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。

解析:

用法也很简单:

<keep-alive>
    <component>
        <!-- 该组件将被缓存! -->
    </component>
</keep-alive>

props _ include - 字符串或正则表达,只有匹配的组件会被缓存 _ exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存

// 组件 a
export default {
    name: "a",
    data() {
        return {};
    }
};
<keep-alive include="a">
    <component>
        <!-- name 为 a 的组件将被缓存! -->
    </component>
</keep-alive>可以保留它的状态或避免重新渲染
<keep-alive exclude="a">
    <component>
        <!-- 除了 name 为 a 的组件都将被缓存! -->
    </component>
</keep-alive>可以保留它的状态或避免重新渲染

但实际项目中, 需要配合 vue-router 共同使用.

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

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

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

增加 router.meta 属性

// routes 配置
export default [{
        path: "/",
        name: "home",
        component: Home,
        meta: {
            keepAlive: true // 需要被缓存
        }
    },
    {
        path: "/:id",
        name: "edit",
        component: Edit,
        meta: {
            keepAlive: false // 不需要被缓存
        }
    }
];


<keep-alive>
    <router-view v-if="$route.meta.keepAlive">
        <!-- 这里是会被缓存的视图组件,比如 Home! -->
    </router-view>
</keep-alive>
 
<router-view v-if="!$route.meta.keepAlive">
    <!-- 这里是不被缓存的视图组件,比如 Edit! -->
</router-view>


目录
相关文章
|
1天前
|
缓存 JavaScript UED
vue的动态组件 keep-alive
【10月更文挑战第6天】
7 3
|
1天前
|
存储 消息中间件 JavaScript
Vue3 多种组件通讯方法
【10月更文挑战第6天】
|
2天前
|
JavaScript
vue知识点
10月更文挑战第2天
15 3
|
1天前
|
JSON 数据可视化 JavaScript
低代码可视化教你Vue遍历循环绑定
低代码可视化教你Vue遍历循环绑定
7 0
|
1天前
|
JavaScript 开发工具
低代码开发工具教你Vue双向数据绑定
低代码开发工具教你Vue双向数据绑定
8 0
|
JavaScript
Vue的非父子组件之间传值
全局事件总线 一种组件间通信的方式,适用于任意组件间通信
|
缓存 JavaScript 前端开发
Vue Props、Slot、v-once、非父子组件间的传值....
Vue Props、Slot、v-once、非父子组件间的传值....
76 0
|
JavaScript
Vue中父子组件传值
先在⽗组件中给⼦组件的⾃定义属性绑定⼀个⽗组件的变量
|
JavaScript
vue 组件传值
vue 组件传值
76 0
|
JavaScript
vue父子组件传值
vue父子组件传值