你是否还在用v-if/v-show来控制tab切换时展示哪个组件/页面吗?如果你知道了component这个vue的内置组件的用法代码会简化好多。下面我为大家介绍下component组件的基本使用。

父组件

<template>
  <div class="component">
    <el-tabs v-model="activeName">
      <el-tab-pane name="comA" label="组件A"></el-tab-pane>
      <el-tab-pane name="comB" label="组件B"></el-tab-pane>
    </el-tabs>
    <component :is="componentId" :params="params"></component>
  </div>
</template>

<script>
import comA from "@/components/comA.vue"
import comB from "@/components/comB.vue"
  export default {
    components: {
      comA,
      comB
    },
    data() {
      return {
        activeName: "comA"
      }
    },
    computed: {
      componentId() {
        return this.activeName 
      },
      params() {
        return this.activeName === 'comA'? 'a数据' : 'b数据'
      }
    }
  }
</script>

子组件A

<template>
  <div>
    我是组件A
  </div>
</template>

<script>
  export default {
    props: {
      params: String
    },
    mounted () {
      console.log(this.params)
    }
  }
</script>

子组件B

<template>
  <div>
   我是组件B
  </div>
</template>

<script>
  export default {
    props: {
      params: String
    },
    mounted () {
      console.log(this.params)
    }
  }
</script>

展示效果
代码效果
补充: 以上写的是最基本的用法,还有更多场景可使用,可参考这里

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐