安装VUE组件-VUE 3

2022-04-07 00:00:00 vue.js vuejs3

我想在第3版中执行此操作

new ComponentName({ 
  propsData: {
    title: 'hello world',
  }
}).$mount();

但我收到此错误:VueComponents_component_name__WEBPACK_IMPORTED_MODULE_1__.default is not a constructor

目前,我们正在使用上述方法通过append

在我们的旧应用程序中附加VUE组件

我想在VUE 3上做同样的事情,但我还没有找到方法

提前谢谢


解决方案

我找到了我答案的解决方案,在VUE 3(VUE项目外)中挂载VUE组件与VUE 2不同,方法如下:

// mount.js

import { createVNode, render } from 'vue'

export const mount = (component, { props, children, element, app } = {}) => {
    let el = element

    let vNode = createVNode(component, props, children)
    if (app && app._context) vNode.appContext = app._context
    if (el) render(vNode, el)
    else if (typeof document !== 'undefined' ) render(vNode, el = document.createElement('div'))

    const destroy = () => {
        if (el) render(null, el)
        el = null
        vNode = null
    }

    return { vNode, destroy, el }
}
  • el:要追加的DOM元素
  • vNode:VUE实例
  • 销毁:销毁组件

这是挂载要直接附加到DOM的VUE 3组件的方法,使用方法如下:

// main.js

import { mount } from 'mount.js'

const { el, vNode, destroy } = mount(MyVueComponents,
      {
          props: {
            fields,
            labels,
            options
           },
           app: MyVueApp
      },
)

$element.html(el);

希望对您有所帮助,致敬!

相关文章