• 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 包裹。

  • 相关阅读:
    LeetCode算法心得——美丽塔 I(HashMap)
    Android 组件化 组件上下依赖关系实现
    MySQL表的操作
    RocketMq源码分析(三)--Broker启动流程
    CSP-J第二轮试题-2020年-4题
    GD32F103 ADC
    PyTorch - autograd自动微分
    机器学习(四十六):Streamlit 构建机器学习 Web
    K8S NFS持久存储配置
    英语单词同义词辨析
  • 原文地址:https://blog.csdn.net/wandoumm/article/details/125556890