From 80a5c939348804913a8d25b1f43376528610e945 Mon Sep 17 00:00:00 2001 From: "mario.gk" Date: Tue, 30 Jun 2020 16:38:58 +0800 Subject: [PATCH 1/2] fix: nextId append the id of document --- packages/designer/src/document/document-model.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index a39698001..2b00d5239 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -131,7 +131,7 @@ export class DocumentModel { * 生成唯一id */ nextId() { - return (++this.seqId).toString(36).toLocaleLowerCase(); + return this.id + (++this.seqId).toString(36).toLocaleLowerCase(); } /** From c5a817bd3a955c9a8f17733c8754d248a2c20dbf Mon Sep 17 00:00:00 2001 From: "mario.gk" Date: Tue, 30 Jun 2020 19:52:30 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=BD=8E?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=84=E4=BB=B6=E8=AE=BE=E8=AE=A1=E6=80=81?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E6=94=B9=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../react-simulator-renderer/src/renderer.ts | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/react-simulator-renderer/src/renderer.ts b/packages/react-simulator-renderer/src/renderer.ts index df316b5ce..45a2a6af2 100644 --- a/packages/react-simulator-renderer/src/renderer.ts +++ b/packages/react-simulator-renderer/src/renderer.ts @@ -219,14 +219,35 @@ export class SimulatorRenderer implements BuiltinSimulatorRenderer { _schema.methods = {}; _schema.lifeCycles = {}; - const getElement = (componentsMap: any, schema: any): ReactElement => { + const processPropsSchema = (propsSchema: any, propsMap: any): any => { + if (!propsSchema) { + return {}; + } + + const result = {...propsSchema}; + const reg = /^(?:this\.props|props)\.(\S+)$/; + Object.keys(propsSchema).map((key: string) => { + if (propsSchema[key].type === 'JSExpression') { + const { value } = propsSchema[key]; + const matched = reg.exec(value); + if (matched) { + const propName = matched[1]; + result[key] = propsMap[propName]; + } + } + }); + return result; + }; + + const getElement = (componentsMap: any, schema: any, propsMap: any): ReactElement => { const Com = componentsMap[schema.componentName]; let children = null; if (schema.children && schema.children.length > 0) { - children = schema.children.map((item: any) => getElement(componentsMap, item)); + children = schema.children.map((item: any) => getElement(componentsMap, item, propsMap)); } const _leaf = host.document.designer.currentDocument?.createNode(schema); - const props = host.document.designer.transformProps(schema.props || {}, host.document.createNode(schema), 1 /*TransformStage.Render*/); + let props = processPropsSchema(schema.props, propsMap); + props = host.document.designer.transformProps(props, host.document.createNode(schema), 1 /*TransformStage.Render*/); return createElement(Com, {...props, _leaf}, children); } @@ -236,7 +257,7 @@ export class SimulatorRenderer implements BuiltinSimulatorRenderer { const componentsMap = renderer.componentsMap; let children = null; if (_schema.children && Array.isArray(_schema.children)) { - children = _schema.children?.map((item:any) => getElement(componentsMap, item)); + children = _schema.children?.map((item:any) => getElement(componentsMap, item, this.props)); } return createElement(React.Fragment, {}, children); }