From 3bfdf3468390e943db276045dc346cbb47213b07 Mon Sep 17 00:00:00 2001 From: "liujuping.liujupin" Date: Mon, 13 Sep 2021 10:09:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=80=E5=A4=96?= =?UTF-8?q?=E5=B1=82=E9=9D=9E=20Page=20=E7=BB=84=E4=BB=B6=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E6=B8=B2=E6=9F=93=E4=B8=94=20props=20=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=AE=8C=E5=85=A8=E8=A7=A3=E6=9E=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/renderer-core/src/renderer/base.tsx | 14 +++++++++++++- packages/renderer-core/src/renderer/component.tsx | 10 ++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/renderer-core/src/renderer/base.tsx b/packages/renderer-core/src/renderer/base.tsx index 05d24cc5f..f0ef23d2a 100644 --- a/packages/renderer-core/src/renderer/base.tsx +++ b/packages/renderer-core/src/renderer/base.tsx @@ -339,6 +339,14 @@ export default function baseRenererFactory() { } as IInfo)); }; + private get self() { + const { __ctx } = this.props; + const self: any = {}; + self.__proto__ = __ctx || this; + + return self; + } + // 将模型结构转换成react Element // schema 模型结构 // self 为每个渲染组件构造的上下文,self是自上而下继承的 @@ -729,7 +737,11 @@ export default function baseRenererFactory() { __renderComp(Comp: any, ctxProps: object) { const { __schema } = this.props; - const data = this.__parseData(__schema?.props); + const data = this.__parseProps(__schema?.props, this.self, '', { + schema: __schema, + Comp, + componentInfo: {}, + }); const { className } = data; const { engine } = this.context || {}; if (!engine) { diff --git a/packages/renderer-core/src/renderer/component.tsx b/packages/renderer-core/src/renderer/component.tsx index 685514ab1..229958f46 100644 --- a/packages/renderer-core/src/renderer/component.tsx +++ b/packages/renderer-core/src/renderer/component.tsx @@ -19,7 +19,7 @@ export default function componentRendererFactory() { } render() { - const { __schema } = this.props; + const { __schema, __components } = this.props; if (this.__checkSchema(__schema)) { return '自定义组件 schema 结构异常!'; } @@ -36,7 +36,13 @@ export default function componentRendererFactory() { return this.__renderContextProvider({ compContext: this }); } - return this.__renderContent(this.__renderContextProvider({ compContext: this })); + const Component = __components[__schema.componentName]; + + if (!Component) { + return this.__renderContent(this.__renderContextProvider({ compContext: this })); + } + + return this.__renderComp(Component, this.__renderContextProvider({ compContext: this })); } }; }