动态组件
比如我们想要实现一个切换组件的功能,这个功能我们可以通过以下三种不同的思路来实现:
方式一:通过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>
方式三:路由的方式,但是对于这种简单的东西来说,其实是没有必要使用路由的。