父组件
<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>
看符合你的业务场景不
2 个回复
喜欢技术的前端 - QQ---445849201
Kevin888 (作者) - 蒹葭苍苍
@谢谢哈 我想的是这么调用。
< Tabs defaultActiveKey="1" items={ tabs } />
Tabs 里面不应该有这些逻辑
<Tab10 v-if="currentTab == 'Tab10'"></Tab10>
<Tab20 v-if="currentTab == 'Tab20'"></Tab20>
因为Tabs是通用的, 事先应该不知道我要使用什么组件。
但是,uni-app 不支持动态组件,做不到。
喜欢技术的前端
是的,山不过来我过去,实现效果就行☺
2023-09-03 21:58