vue3 动态组件

<template>
     <div class="tabs-content" @click="switchTab(tab)" 
     v-for="(tab, index) in tabData" :key="index">
        {{ tab.name }}
      </div>
       <keep-alive>
             <component :is="currentTab.tabComp"></component>
       </keep-alive>
</template>

<script setup lang="ts">
    import A from './A.vue'
    import B from './B.vue'
    import C2 from './C2.vue'
    import { reactive,ref,markRaw} from 'vue';
    const tabData=reactive([
        {name: 'A组件',tabComp:markRaw(A)},                    
        {name: 'B组件',tabComp:markRaw(B)},                            
        {name: 'C组件',tabComp:markRaw(C2)},
    ])
    type tabType={
        name:string,
        tabComp:any
    }
    const switchTab=(tab:tabType)=>{
         currentTab.tabComp = tab.tabComp

    }
    const currentTab = reactive<tabType[]>({
        tabComp:tabData[0].tabComp
    })
    
</script>

markRaw

作用:标记一个对象,使其永远不会再成为响应式对象

应用场景:

1.有些值不应被设置成响应式时,例如复杂的第三方类库等

2.当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能

3.在动态渲染组件的时候我们就可以使用 markRaw 包裹。

你好!学习Vue 3动态组件是一个很不错的选择。Vue 3中的动态组件可以帮助你在运行时动态地切换不同的组件,并且非常方便易用。下面是一些学习Vue 3动态组件的基本步骤: 1. 安装Vue 3:首先,你需要在你的项目中安装Vue 3。你可以通过CDN引入Vue 3,也可以使用npm或yarn安装。 2. 创建动态组件:在Vue 3中,你可以使用`<component>`元素来创建动态组件。你可以将`is`属性设置为一个变量,该变量的值可以是一个组件的名称或组件实例。 3. 切换组件:通过改变`is`属性的值,你可以在运行时动态地切换组件。这可以通过计算属性、方法等来实现。 4. 注册组件:在使用动态组件之前,你需要确保你的组件已经注册。你可以使用`app.component`方法来全局注册组件,或者在局部组件中使用`components`选项来注册组件。 5. 渲染动态组件:最后,在模板中使用`<component>`元素并将`is`属性绑定到变量,以渲染动态组件。 这是一个简单的示例代码,演示了如何使用Vue 3动态组件: ```javascript <template> <div> <component :is="currentComponent"></component> <button @click="toggleComponent">切换组件</button> </div> </template> <script> import ComponentA from './ComponentA.vue'; import ComponentB from './ComponentB.vue'; export default { data() { return { currentComponent: 'ComponentA' }; }, components: { ComponentA, ComponentB }, methods: { toggleComponent() { this.currentComponent = this.currentComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA'; } } }; </script> ``` 在这个示例中,我们创建了两个组件`ComponentA`和`ComponentB`,然后在父组件中使用`<component>`元素来动态渲染当前的组件。通过点击按钮,可以切换当前组件的显示。 希望这个示例能够帮助你开始学习Vue 3动态组件!如果你有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值