Vue3 在单击按钮时以编程方式创建组件实例

Art*_*miy 8 javascript vue.js vuejs3

在 vue2 中很容易:

<template>
 <button :class="type"><slot /></button>
</template>
<script>
 export default {
   name: 'Button',
   props: [ 'type' ],
 }
</script>
Run Code Online (Sandbox Code Playgroud)
import Button from 'Button.vue'
import Vue from 'vue'

var ComponentClass = Vue.extend(Button)
var instance = new ComponentClass()

instance.$mount() // pass nothing
this.$refs.container.appendChild(instance.$el)
Run Code Online (Sandbox Code Playgroud)

扩展 + 创建实例。但是在 vue3 中它已被删除。哪里有别的办法?

Art*_*miy 8

import {defineComponent,createApp} from 'vue'

buttonView = defineComponent({
    extends: Button, data() {
        return {
            type: "1111"
        }
    }
})

const div = document.createElement('div');
this.$refs.container.appendChild(div);
createApp(buttonView ).mount(div)
Run Code Online (Sandbox Code Playgroud)

  • 依赖注入在这种情况下不起作用 (2认同)