javascript - 如何在 vue.js 中渲染组件实例数组?
问题描述
我需要构建可以在组组件中分组的动态组件列表。然后我需要发送有关已构建组件和组的所有信息。
我可以使用<component v-for="componentName in myComponents" :is="componentName"></component>
, 并使用 获取有关组件的信息this.$children.map(component => component.getInformation())
,但是我无法将某些组件移动到组组件,因为我只有组件名称而不是带有数据的组件实例(它只是使用默认数据呈现)。
我也可以使用这个:
<template>
<div ref="container"> </div>
</template>
<script>
import someComponent from 'someComponent.vue'
import Vue from 'vue'
export default {
data () {
return {
myComponents: []
}
},
methods: {
addSomeComponent () {
let ComponentClass = Vue.extend(someComponent);
let instance = new ComponentClass({});
myComponents.push(instance);
instance.$mount();
this.$refs.container.appendChild(instance.$el)
},
getInformation () {
return this.myComponents.map(component => component.getInformation());
}
}
}
</script>
但是我不能使用反应性、指令(例如拖放指令),而且它不是数据驱动模式。
有什么建议么?
解决方案
<template>
<div class="component">
<template v-for="(child, index) in children()">
<component :is="child" :key="child.name"></component>
</template>
</div>
</template>
<script>
import someComponent from 'someComponent.vue'
import Vue from 'vue'
export default {
methods: {
children() {
let ComponentClass = Vue.extend(someComponent);
let instance = new ComponentClass({});
return [
instance
];
},
}
}
</script>
推荐阅读
- amazon-web-services - AWS S3 存储桶仅上传所有 zip 文件
- git - 为什么 GitHub 页面没有反映我在本地所做的更改
- python-3.x - 自动构建搜索词
- python - Pandas 基于多索引的两个数据框相减
- c - `table = malloc(sizeof *table * count)`的模式
- angular - 用户明确的角度关闭错误消息
- c++ - 打包可变参数模板具有零元素时的递归
- r - 二分图的数据(在 R 中)只能是 0 和 1?
- android - 如何为 NativeScript 制作像 Apple 时钟这样的动画图标
- python - 我正在尝试使用 python pandas 数据框将多个列加到一个新的总和列中