UNPKG

element3

Version:

A Component Library for Vue3

26 lines (22 loc) 817 B
import { h, render } from 'vue' const MOUNT_COMPONENT_REF = 'el_component' const COMPONENT_CONTAINER_SYMBOL = Symbol('el_component_container') /** * 创建组件实例对象 * 返回的实例和调用 getCurrentComponent() 返回的一致 * @param {*} Component */ export function createComponent(Component, props, children) { const vnode = h(Component, { ...props, ref: MOUNT_COMPONENT_REF }, children) const container = document.createElement('div') vnode[COMPONENT_CONTAINER_SYMBOL] = container render(vnode, container) return vnode.component } /** * 销毁组件实例对象 * @param {*} ComponnetInstance 通过createComponent方法得到的组件实例对象 */ export function unmountComponent(ComponnetInstance) { render(undefined, ComponnetInstance.vnode[COMPONENT_CONTAINER_SYMBOL]) }