vue 创建动态组件
动态组件:官网介绍通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点,并动态切换。根据 v-bind:is="组件名" 中的组件名去自动匹配组件,如果匹配不到则不显示。改变挂载的组件,只需要修改is指令的值即可。父组件就可以通过is方法,在一个挂载点上动态的切换多个子组件父组件<template><!-- 动
·
通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点。根据 v-bind:is="组件名" 中的组件名去自动匹配组件,如果匹配不到则不显示。改变挂载的组件,只需要修改is指令的值即可。
使用场景:
网上找了许些资料,大多用于tab切换,根据切换匹配当前要挂载的组件。
后来想想还有一种使用场景,可以根据服务端返回数据进行动态渲染组件。组件的顺序有服务端返回,前端进行遍历,进行动态挂载。
父组件
<template>
<!-- 动态组件 -->
<div class="dynamicComp">
<div v-for="(item,idx) in compData" :key="item.id">
<component :is="item.type"></component>
</div>
</div>
</template>
<script>
import comp1 from './comp/comp1.vue'
import comp2 from './comp/comp2.vue'
import comp3 from './comp/comp3.vue'
export default {
name: "dynamicComp",
components: {
comp1,
comp2,
comp3
},
data() {
return {
compData: [
{
id: 1,
type: 'comp1'
},
{
id: 2,
type: 'comp2'
},
{
id: 3,
type: 'comp3'
},
]
}
},
}
</script>
子组件comp1:
<template>
<div class="comp1">
动态组件子组件1
</div>
</template>
<script>
export default {
name:"comp1",
}
</script>
子组件comp2:
<template>
<div class="comp2">
动态组件子组件2
</div>
</template>
<script>
export default {
name:"comp2",
}
</script>
子组件comp3:
<template>
<div class="comp3">
动态组件子组件3
</div>
</template>
<script>
export default {
name:"comp3",
}
</script>
更多推荐
已为社区贡献18条内容
所有评论(0)