返回
vue动态组件
前端
2023-11-23 12:16:12
对于vue中的动态组件,绝大多数都是利用 和<#>component</#keyword> 实现的。这两种方式各有利弊。
一、 <#>v-if</#keyword>
- 使用方便快捷,是实现动态组件的最直接、最简单的方案。
- 不过相对的,这种方式过于简单,容易造成html结构凌乱。
- 代码量多。
二、 <#>component</#keyword>
- 代码量少,相对简洁。
- 需要定义多个子组件。
//1.v-if
<template>
<div>
<component v-if="currentComponent == 'A'" :is="componentA"></component>
<component v-if="currentComponent == 'B'" :is="componentB"></component>
</div>
</template>
<script>
import componentA from './componentA.vue'
import componentB from './componentB.vue'
export default {
data() {
return {
currentComponent: 'A'
}
},
components: {
componentA,
componentB
}
}
</script>
//2.component
<template>
<div>
<component :is="currentComponent"></component>
</div>
</template>
<script>
import componentA from './componentA.vue'
import componentB from './componentB.vue'
export default {
data() {
return {
currentComponent: 'A'
}
},
components: {
'component-a': componentA,
'component-b': componentB
}
}
</script>
由于vue中的动态组件本身就不复杂,所以使用的方式也比较少。基本都是基于这两种方式衍生出来的。
另外,在使用时,需要根据场景来选择使用<#>v-if</#keyword>还是<#>component</#keyword>。而最终都是基于组件进行切换。
当然,使用哪个方案,还需要根据业务需求来决定。