vue.js: 从字符串创建组件
vue.js: create component from string
我有两个名为 component-1 和 component-2 的组件,以及这个 vue.js 代码:
<template>
<div id="app">
<input class="input" @keyup="update()">
<div class="render"></div>
</div>
</template>
<script>
export default {
methods:{
update () {
document.querySelector(".render").innerHTML=`<component-${
document.querySelector(".input").value
} />`
}
}
}
</script>
每当我 运行 代码时,组件都不会呈现。有没有办法让这个组件渲染?
这不是在 Vue
中动态呈现组件的正确方法 - 您应该使用 :is
<template>
<div id="app">
<input class="input" @keyup="update($event.target.value)">
<component :is="myComponent"></component>
</div>
</template>
<script>
export default {
data() {
return {
myComponent: undefined
}
},
methods:{
update (component) {
this.myComponent = component
}
}
}
</script>
沙盒演示是 here
我有两个名为 component-1 和 component-2 的组件,以及这个 vue.js 代码:
<template>
<div id="app">
<input class="input" @keyup="update()">
<div class="render"></div>
</div>
</template>
<script>
export default {
methods:{
update () {
document.querySelector(".render").innerHTML=`<component-${
document.querySelector(".input").value
} />`
}
}
}
</script>
每当我 运行 代码时,组件都不会呈现。有没有办法让这个组件渲染?
这不是在 Vue
中动态呈现组件的正确方法 - 您应该使用 :is
<template>
<div id="app">
<input class="input" @keyup="update($event.target.value)">
<component :is="myComponent"></component>
</div>
</template>
<script>
export default {
data() {
return {
myComponent: undefined
}
},
methods:{
update (component) {
this.myComponent = component
}
}
}
</script>
沙盒演示是 here