vue2组件通信案例:tab栏

App.vue

<template>
  <div>
    <tab-bar :tabTitle="tabTitle" @showContent="showContent"></tab-bar>

    <!-- tab内容 -->
    <h1>{{ tabContent[curIndex] }}</h1>
  </div>
</template>

<script>
import TabBar from './components/TabBar.vue'

export default {
  components: { TabBar },
  data() {
    return {
      tabTitle: ['tabl1', 'tabl2', 'tabl3'],
      tabContent: ['AAA', 'BBB', 'CCC'],
      curIndex: 0
    }
  },
  methods: {
    showContent(index) {
      this.curIndex = index
    },
  },
}
</script>

<style scoped></style>

TabBar.vue

<template>
  <div>
    <header>
      <div class="tabItem" v-for="(item, index) in tabTitle" :key="item" @click="handleClick(index)"
        :class="{ active: curIndex === index }">{{ item }}</div>
    </header>
  </div>
</template>

<script>
export default {
  data() {
    return {
      curIndex: 0
    }
  },
  props: ['tabTitle'],
  emits: ['showContent'],
  methods: {
    handleClick(index) {
      this.curIndex = index

      // 抛出自定义事件,将参数下标index传递给父组件
      this.$emit('showContent', index)
    }
  }
}
</script>

<style scoped lang="less">
header {
  display: flex;
  text-align: center;

  .tabItem {
    flex: 1;
    border: 1px solid #000;
  }
}

.active {
  color: pink;
}
</style>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值