1、动态组件
1. 什么是动态组件
动态组件指的是动态切换组件的显示与隐藏。
2. 如何实现动态组件渲染
vue 提供了一个内置的 <component>(组件的占位符) 组件,专门用来实现动态组件的渲染。示例代码如下:
<template>
<div class="goods-tabs">
<nav>
<a @click="toggle('GoodsDetail')" :class="{ active: componentName === 'GoodsDetail' }" href="javascript:;"
>商品详情</a
>
<a @click="toggle('GoodesComment')" :class="{ active: componentName === 'GoodesComment' }" href="javascript:;"
>商品评价<span>(500+)</span></a
>
</nav>
<!-- 切换内容的地方 -->
<!-- <GoodsDetail></GoodsDetail>
<GoodesComment /> -->
<component :is="componentName"></component>
</div>
</template>
<script>
import GoodsDetail from './goods-detail.vue'
import GoodesComment from './goods-comment.vue'
import { ref } from 'vue'
export default {
name: 'GoodsTabs',
components: { GoodsDetail, GoodesComment },
setup() {
// 当前组件的名称
const componentName = ref('GoodsDetail')
const toggle = name => {
componentName.value = name
}
return { toggle, componentName }
}
}
</script>
<style lang="less" scoped>
.goods-tabs {
min-height: 600px;
background: #fff;
nav {
height: 70px;
line-height: 70px;
display: flex;
border-bottom: 1px solid #f5f5f5;
a {
padding: 0 40px;
font-size: 18px;
position: relative;
> span {
color: @priceColor;
font-size: 16px;
margin-left: 10px;
}
&:first-child {
border-right: 1px solid #f5f5f5;
}
&.active {
&::before {
content: '';
position: absolute;
left: 40px;
bottom: -1px;
width: 72px;
height: 2px;
background: @xtxColor;
}
}
}
}
}
</style>
|