动态组件

本文介绍了在Vue.js中实现组件切换的三种方法:使用v-if条件渲染,借助动态组件的:is属性,以及路由切换。示例代码展示了如何在模板中根据当前选中的tab动态渲染Home、About和Category组件。动态组件和v-if提供了灵活的方式来管理组件的显示,而路由则适用于更复杂的页面导航场景。
摘要由CSDN通过智能技术生成

动态组件

比如我们想要实现一个切换组件的功能,这个功能我们可以通过以下三种不同的思路来实现:

方式一:通过v-if来判断,从而显示不同的组件。

方式二:动态组件的方式,动态组件是借助于component组件并通过一个特殊的属性 :is来实现。

<template>
  <div>
    <button v-for="item in tabs" :key="item"
            @click="itemClick(item)"
            :class="{active: currentTab === item}">
      {{item}}
    </button>

    <!-- 2.动态组件的方式 -->
      <component :is="currentTab"
                 name="coderwhy"
                 :age="18"
                 @pageClick="pageClick">
      </component>
    

    <!-- 1.v-if的判断实现 -->
    <template v-if="currentTab === 'home'">
      <home></home>
    </template>
    <template v-else-if="currentTab === 'about'">
      <about></about>
    </template>
    <template v-else>
      <category></category>
    </template> -->
  </div>
</template>

<script>
  import Home from './pages/Home.vue';
  import About from './pages/About.vue';
  import Category from './pages/Category.vue';

  export default {
    components: {
      Home,
      About,
      Category
    },
    data() {
      return {
        tabs: ["home", "about", "category"],
        currentTab: "home"
      }
    },
    methods: {
      itemClick(item) {
        this.currentTab = item;
      },
      pageClick() {
        console.log("page内部发生了点击");
      }
    }
  }
</script>

<style scoped>
  .active {
    color: red;
  }
</style>

方式三:路由的方式,但是对于这种简单的东西来说,其实是没有必要使用路由的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值