vue-动态组件

vue 动态组件用于实现在指定位置上,动态加载不同的组件,核心代码如下

<component :is="componentTag"></component>
data() {
    return {
        componentTag: '',
    }
},

componentTag为动态加载的不同组件名称,即它可以是组件或者常规的html元素(但这些元素将被视为组件,这意味着所有的 attribute 都会作为 DOM attribute 被绑定。对于像 value 这样的 property,若想让其如预期般工作,你需要使用 .prop 修饰器。)。将需要加载的组件名赋值给componentTag,即可在标签出现的位置,渲染该组件。

  • 使用场景
    在不同组件之间进行动态切换是非常有用的,比如在一个多标签的界面里:
    在这里插入图片描述
  • 拓展- 说道动态组件以及这种tab切换,可能就需要想到tab切换时反复重新渲染导致的性能问题
    tab切换时有时需要保持这些被切换的组件状态,有时希望vue重新创建currentTabComponent
    当我们需要保持被切换到组件状态时,希望那些标签的组件实例能够被在它们第一次被创建的时候缓存下来。为了解决这个问题,我们可以用一个<keep-alive>元素将其动态组件包裹起来。
<!-- 失活的组件将会被缓存!-->
<keep-alive>
  <component v-bind:is="currentTabComponent"></component>
</keep-alive>

注意:这个 <keep-alive> 要求被切换到的组件都有自己的名字,不论是通过组件的 name 选项还是局部/全局注册。

官方文档:https://v2.cn.vuejs.org/v2/api/#keep-alive

<keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。主要用于保留组件状态或避免重新渲染。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中。

当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值