Vue动态组件

1.什么是动态组件

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

2. 如何实现动态组件渲染

vue 提供一个内置的 <component> 组件,专门用来实现动态组件的渲染

  • <component> 组件作用:相当于占位符
  • is 属性的值:表示要渲染的组件的名字,应当是 components下注册的组件名
<button @click="comName = 'Left' ">展示 Left</button>
<button @click="comName = 'Right' ">展示 Right</button>
<div class="box">
    <component  :is="comName"></component>
</div>
export default {
    components: {
        Left,
        Right,
    },
    data() {
        return {
            // comName 表示要展示的组件的名字
            comName: 'Left'
        }
    }
}

3. 使用 keep-alive 保持状态

  • 每次切换 component 内的组件都会重新创建销毁

  • 可以使用 <keep-alive> 来保存状态,不会销毁组件也不会重新创建,会被缓存或者激活

  • 使用:

    <div class="box">
        <keep-alive>
            <component  :is="comName"></component>
        </keep-alive>
    </div>
    

4. keep-alive 对应的生命周期函数

  • 当组件被缓存的时候,会自动触发组件的 deactivated 生命周期函数
  • 当组件被激活的时候,会自动触发组件的 activated 生命周期函数
  • 当组件第一次被创建的时候,先触发 created,再触发 activated
  • 之后被激活时只触发 activated,不再触发 created
export default {
    created(){
        console.log('Left 被创建')
    },
    destroyed(){
        console.log('Left 被销毁')
    },
    deactivated(){
        console.log('Left 组件被缓存')
    },
    activated(){
        console.log('Left 组件被激活')
    },
}

5. keep-alive 的 include 属性

  • include 用来指定:只有名称匹配的组件会被缓存。多个组件名之间使用英文的逗号分隔。
  • exclude 属性指定谁不被缓存,二者只能指定一个。
<keep-alive include="Left,Right">
    <component  :is="comName"></component>
</keep-alive>

6. 了解组件注册名称和组件声明时name的区别

  • 当提供了 name 属性之后,组件的名称就是 name 属性的值
  • 组件的注册名称是为了在页面中按标签形式使用
  • 组件声明时候的 name 名称调试工具中可以看到,在指定是否缓存也是根据name名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值