diff --git a/modules/code-generator/src/plugins/component/react/containerClass.ts b/modules/code-generator/src/plugins/component/react/containerClass.ts index 0758c893e..b4c474b38 100644 --- a/modules/code-generator/src/plugins/component/react/containerClass.ts +++ b/modules/code-generator/src/plugins/component/react/containerClass.ts @@ -26,7 +26,7 @@ const pluginFactory: BuilderComponentPluginFactory = () => { // 将模块名转换成 PascalCase 的格式,并添加特定后缀,防止命名冲突 const componentClassName = ensureValidClassName( - `${changeCase.pascalCase(ir.moduleName)}$$Page`, + `${changeCase.pascalCase(ir.moduleName)}$$${ir.containerType}`, ); next.chunks.push({ @@ -43,6 +43,18 @@ const pluginFactory: BuilderComponentPluginFactory = () => { ], }); + if (ir.containerType === 'Component') { + next.chunks.push({ + type: ChunkType.STRING, + fileType: FileType.JSX, + name: CLASS_DEFINE_CHUNK_NAME.InsVar, + content: `static displayName = '${changeCase.pascalCase(ir.moduleName)}';`, + linkAfter: [ + CLASS_DEFINE_CHUNK_NAME.Start, + ], + }); + } + next.chunks.push({ type: ChunkType.STRING, fileType: FileType.JSX, diff --git a/modules/code-generator/src/types/deps.ts b/modules/code-generator/src/types/deps.ts index cb2fb5eac..a6531092d 100644 --- a/modules/code-generator/src/types/deps.ts +++ b/modules/code-generator/src/types/deps.ts @@ -35,4 +35,4 @@ export interface IDependency { main?: string; // 包导出组件入口文件路径 /lib/input dependencyType?: DependencyType; // 依赖类型 内/外 componentName?: string; // 导入后名称 -} +} \ No newline at end of file diff --git a/modules/code-generator/src/utils/common.ts b/modules/code-generator/src/utils/common.ts index d822fdf81..fa7ab30a9 100644 --- a/modules/code-generator/src/utils/common.ts +++ b/modules/code-generator/src/utils/common.ts @@ -1,6 +1,7 @@ import type { IPublicTypeJSExpression, IPublicTypeJSFunction } from '@alilc/lowcode-types'; import changeCase from 'change-case'; import short from 'short-uuid'; +import { DependencyType, IDependency, IExternalDependency, IInternalDependency } from '../types'; // Doc: https://www.npmjs.com/package/change-case @@ -43,4 +44,16 @@ export function getStaticExprValue(expr: string): T { export function isJSExpressionFn(data: any): data is IPublicTypeJSFunction { return data?.type === 'JSExpression' && data?.extType === 'function'; +} + +export function isInternalDependency( + dependency: IDependency, +): dependency is IInternalDependency { + return dependency.dependencyType === DependencyType.Internal; +} + +export function isExternalDependency( + dependency: IDependency, +): dependency is IExternalDependency { + return dependency.dependencyType === DependencyType.External; } \ No newline at end of file