From c77e047fe75606253249b806304a54918f5ff223 Mon Sep 17 00:00:00 2001 From: gongxh Date: Tue, 15 Jul 2025 11:36:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96UI=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=92=8C=E7=AA=97=E5=8F=A3=E8=B5=84=E6=BA=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - **ComponentExtendHelper:** 增加了对重复注册组件的检查和跳过逻辑,避免重复处理。 - **WindowResPool:** 优化了资源添加逻辑,对于已存在的资源不再抛出错误。 - **package.json:** 版本号更新至 。 --- package.json | 2 +- src/ui/ComponentExtendHelper.ts | 9 +++++++++ src/ui/WindowResPool.ts | 5 ++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index cbda66b..2acac2e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kunpocc", - "version": "1.1.6", + "version": "1.1.7", "description": "基于creator3.0+的kunpocc库", "main": "./dist/kunpocc.cjs", "module": "./dist/kunpocc.mjs", diff --git a/src/ui/ComponentExtendHelper.ts b/src/ui/ComponentExtendHelper.ts index 06e4095..dd4f0de 100644 --- a/src/ui/ComponentExtendHelper.ts +++ b/src/ui/ComponentExtendHelper.ts @@ -9,10 +9,19 @@ import { PropsHelper } from "./PropsHelper"; import { _uidecorator } from "./UIDecorator"; export class ComponentExtendHelper { + /** 已注册的组件集合 @internal */ + private static _registeredComponents: Set = new Set(); + public static register(): void { for (const { ctor, res } of _uidecorator.getComponentMaps().values()) { + const componentKey = `${res.pkg}/${res.name}`; + if (this._registeredComponents.has(componentKey)) { + debug(`自定义组件已注册,跳过 组件名:${res.name} 包名:${res.pkg}`); + continue; + } debug(`自定义组件注册 组件名:${res.name} 包名:${res.pkg}`); this.registerComponent(ctor, res.pkg, res.name); + this._registeredComponents.add(componentKey); } } diff --git a/src/ui/WindowResPool.ts b/src/ui/WindowResPool.ts index 9adb8c8..707bf0a 100644 --- a/src/ui/WindowResPool.ts +++ b/src/ui/WindowResPool.ts @@ -60,7 +60,7 @@ export class WindowResPool { */ public add(ctor: any, group: string, pkg: string, name: string): void { if (this.has(name)) { - throw new Error(`窗口【${name}】信息已注册 请勿重复注册`); + return; } this._windowInfos.set(name, { ctor: ctor, @@ -89,6 +89,9 @@ export class WindowResPool { * @param info */ public addHeader(ctor: any, pkg: string, name: string): void { + if (this.hasHeader(name)) { + return; + } this._headerInfos.set(name, { ctor: ctor, pkg: pkg