JinZHouXiYiJi_DaPin2/examples/load.ts

38 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

2023-12-05 13:23:01 +08:00
import type { BaseComponent } from 'open-data-v/base'
import { useCanvasState } from 'open-data-v/designer'
import type { App } from 'vue'
import { defineAsyncComponent } from 'vue'
const canvasState = useCanvasState()
const useLoadComponent = () => {
return {
install: (app: App) => {
// 注册Group组件
const moduleFilesTs: any = import.meta.glob('../resource/**/index.ts', {
eager: true
})
Object.keys(moduleFilesTs).forEach((key: string) => {
const componentOptions = moduleFilesTs[key]?.default
if (componentOptions) {
canvasState.loadComponent(
componentOptions.componentName,
componentOptions.config as BaseComponent
)
// 注册异步组件
const asyncComp = defineAsyncComponent({
loader: componentOptions.component,
delay: 200,
timeout: 3000
})
app.component(componentOptions.componentName, asyncComp)
} else {
console.error(`${key} is not a valid component`)
}
})
}
}
}
export { useLoadComponent }