diff --git a/packages/designer/src/document/node/props/prop.ts b/packages/designer/src/document/node/props/prop.ts index 634a6b14b..33eb45d1c 100644 --- a/packages/designer/src/document/node/props/prop.ts +++ b/packages/designer/src/document/node/props/prop.ts @@ -315,9 +315,17 @@ export class Prop implements IPropParent { setAsSlot(data: JSSlot) { this._type = 'slot'; let slotSchema: SlotSchema; - // 当 data.value 的结构为 { componentName: 'Slot' } 时,直接当成 slotSchema 使用 + // 当 data.value 的结构为 { componentName: 'Slot' } 时,复用部分 slotSchema 数据 if ((isPlainObject(data.value) && data.value?.componentName === 'Slot')) { - slotSchema = data.value as SlotSchema; + const value = data.value as SlotSchema; + slotSchema = { + componentName: 'Slot', + title: value.title || value.props?.slotTitle, + id: data.id, + name: value.name || value.props?.slotName, + params: value.params || value.props?.slotParams, + children: data.value, + } as SlotSchema; } else { slotSchema = { componentName: 'Slot', diff --git a/packages/types/src/schema.ts b/packages/types/src/schema.ts index e320d6b51..fe86a4132 100644 --- a/packages/types/src/schema.ts +++ b/packages/types/src/schema.ts @@ -162,7 +162,14 @@ export type RootSchema = PageSchema | ComponentSchema | BlockSchema; export interface SlotSchema extends NodeSchema { componentName: 'Slot'; name?: string; + title?: string; params?: string[]; + props?: { + slotTitle?: string; + slotName?: string; + slotParams?: string[]; + }; + children?: NodeSchema[]; } /**