所以我有一个带有四个选项卡的 Tabs.vue 组件:
<template>
.
.
<v-tab href="#tab-1" @click="showFirstTabFunc">
First Tab
<v-icon>check_box_outline_blank</v-icon>
</v-tab>
<v-tab href="#tab-2" @click="showSecondTabFunc">
Second Tab
<v-icon>indeterminate_check_box</v-icon>
</v-tab>
<v-tab href="#tab-3" @click="showThirdTabFunc">
Third Tab
<v-icon>memory</v-icon>
</v-tab>
<v-tab href="#tab-4" @click="showTabFourFunc">
Fourth Tab
<v-icon>list_alt</v-icon>
</v-tab>
.
.
</template>
<script>
.
.
methods:{
showFirstTabFunc(){
},
showSecondTabFunc(){
},
showThirdTabFunc(){
},
showFourthTabFunc(){
},
.
.
</script>
现在我有了父组件 App.vue ,其中包含:
<template>
.
.
<app-tabs></app-tabs>
.
.
</template>
<script>
import Tabs from "./Tabs.vue";
export default {
data() {
return {
showFirstTab: false,
showSecondTab: false,
showThirdTab: false,
showTabFour: false,
}
},
components:{
appTabs: Tabs
}
}
</script>
我的目标是在 Tabs.vue 中单击“第一标签”,然后在 App.vue 中将“ showFirstTab”从false更改为true。然后,如果我单击 Tabs.vue 中的第二个选项卡,则 App.vue 中的“ showFirstTab”变为false,而“ showSecondTab”变为true,依此类推。
P.S是的,我必须将这些道具保留在父组件中。
答案 0 :(得分:5)
您可以emit event成为父母
showFirstTabFunc () {
this.$emit('setActiveTab', 'showFirstTab')
}
在父母中
<app-tabs @setActiveTab="setActiveTab"></app-tabs>
methods: {
setActiveTab (activeTab) {
this.showFirstTab = false
this.showSecondTab = false
this.showThirdTab = false
this.showTabFour = false
this[activeTab] = true
}
}