Kevin888
Kevin888
  • 发布:2023-09-02 12:28
  • 更新:2023-09-03 06:22
  • 阅读:205

如何渲染在数组中定的组件?

分类:uni-app

import Tab10 from '@/components/Tab10.vue';
import Tab20 from '@/components/Tab20.vue';
const tabs = [
{tabId: 'tab10', tabLabel: 'label10', component: Tab10},
{tabId: 'tab20', tabLabel: 'label20', component: Tab20},
]

tabs中的组件不是固定的.如何渲染在数组中的组件?
问这个问题的目的,是想要定义一个Tabnav 组件,这么使用

<Tabnav tabs="tabs" />

2023-09-02 12:28 负责人:无 分享
已邀请:
喜欢技术的前端

喜欢技术的前端 - QQ---445849201

父组件  
<Tabnav :tabs="tabs" />  
子组件  

<template>  
    <view class="content">  
        <view class="" v-for="(item,index) in tabs" :key="item.tabId" @click="clickTab(item.component)">  
            <view class="">  
                {{item.tabLabel}}  
            </view>  
        </view>  
        <Tab10 v-if="currentTab == 'Tab10'"></Tab10>  
        <Tab20 v-if="currentTab == 'Tab20'"></Tab20>  
    </view>  
</template>  

<script>  
    import Tab10 from '@/components/Tab10.vue';  
    import Tab20 from '@/components/Tab20.vue';  
    export default {  
        name:'Tabnav',  
        props:{  
            tabs:{  
                type:Array,  
                default: [],  
            },  
        },  
        data() {  
            return {  
                currentTab: 'Tab10'  
            }  
        },  
        mounted() {  
            this.currentTab = this.tabs.length>0?this.tabs[0].component:''  
        },  
        methods: {  
            clickTab(component) {  
                if (this.currentTab == component) {  
                    return  
                }  
                this.currentTab = component  
            }  
        }  
    }  
</script>  
看符合你的业务场景不  
Kevin888

Kevin888 (作者) - 蒹葭苍苍

@谢谢哈 我想的是这么调用。
< Tabs defaultActiveKey="1" items={ tabs } />
Tabs 里面不应该有这些逻辑
<Tab10 v-if="currentTab == 'Tab10'"></Tab10>
<Tab20 v-if="currentTab == 'Tab20'"></Tab20>
因为Tabs是通用的, 事先应该不知道我要使用什么组件。

但是,uni-app 不支持动态组件,做不到。

要回复问题请先登录注册