vue.js - Vue3动态添加组件到dom
问题描述
每当用户单击按钮时,我都会尝试将特定组件添加到 DOM 元素。我在 dom 中显示组件的代码:
<component v-for="(component, index) in components" :key="index" :is="component"></component>
我正在使用带有组合的 Vue3。
const components = reactive([]);
components[0] = 'TemplateText';
components[1] = 'TemplateText';
我希望这个组件现在将在我的 DOM 中加载两次。当我检查我的源代码时,该组件存在两次,即:
<templatetext data-v-997532dc=""></templatetext>
<templatetext data-v-947231dc=""></templatetext>
但即使组件中确实包含 tekst,它也不会显示任何内容。
谁能告诉我可能出了什么问题?什么是归档我想做的工作方法?
解决方案
您的组件应该在components
选项中全局或本地注册,并且反应应该将对象作为参数,或者您应该使用 ref 代替:
components:{
TemplateText
},
setup(props){
const state= reactive({components:[]});
state.components[0] = 'TemplateText';
state.components[1] = 'TemplateText';
return {state}
}
模板 :
<component v-for="(component, index) in state.components" :key="index" :is="component"></component>
如果你只想多次渲染你的组件,只需循环一个数字而不使用反应性的东西:
<TemplateText v-for="index in 2" :key="index"/>
推荐阅读
- java - 为什么不使用 HashMap 来获取确切的枚举而不是一一比较呢?
- c# - 从 ASP.NET 应用程序连接到 Azure Active Directory
- python - 模块 'tensorflow' 没有属性 'enable_eager_execution' - 使用 TensorFlow 2.6
- java - 出队方法在 enqueueFront 和 Rear、dequeueFront 和 Rear、insertFront 和 Rear 以及字符串有问题
- reactjs - 从 React 中的表行访问特定的表数据
- mysql - 如何将 MYSQL 转换为 PL/SQL
- c# - C# 启动进程然后停止
- ios - 使用 UICollectionViewCompositionalLayout 嵌套 UICollectionView
- jenkins - Jenkins 管道文件目标位置
- regex - 如何从第一个特定匹配结果(另一行)中查找值,正则表达式