Vue 动态组件

294 阅读1分钟

概述

动态组件就是指动态的切换组件的显示与隐藏

动态组件允许用户在一个框架内,切换框架内已经写好的一些组件。

使用

vue 为我们提供了一个 component 标签,它允许我们来在其中动态的渲染我们指定的组件。

component 标签中,is 属性中指定了需要动态渲染的组件,如果我们需要组件时,只需要改变此属性即可。

<componet :is="comName"></componet>
<button @click="conName = 'Left'">展示 Left 组件</button>
<button @click="conName = 'Right'">展示 Right 组件</button>
​
data(){
    return { comName: 'Left' }
},
components: {
    Left,
    Right
}

状态保持

在默认情况下,component 标签动态渲染的组件在进行组件切换时,被切换的组件会被销毁,这样再次切换回来时之前的组件会被重新创建,这样就导致了之前的组件状态不能被保存。

我们可以使用 keep-alive 标签,来指定动态组件被切换时,不被销毁,而是缓存在内存中,这样再次切换回来时,就会保留之前的状态。

<keep-alive>
    <componet :is="comName"></componet>
</keep-alive>

include 属性

keep-alive 标签未绑定 include 属性时,默认会将所有组件进行状态保持。

当指定了 include 属性是,只会将指定的组件进行状态保存。

<keep-alive include="MyLeft, MyRight">
    <componet :is="comName"></componet>
</keep-alive>

\