Vue3 动态添加组件到 dom
Vue3 add component to dom dynamically
我试图在用户单击按钮时将特定组件添加到 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"/>
我试图在用户单击按钮时将特定组件添加到 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"/>