From f921f3c7b0f148a5a3314b21b5766bfba68129c5 Mon Sep 17 00:00:00 2001 From: "liujuping.liujupin" Date: Wed, 17 Nov 2021 17:18:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=80=E5=B0=8F?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=8D=95=E5=85=83=E9=97=AE=E9=A2=98=20&=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E8=AE=A1=E6=80=81=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E5=BC=95=E6=93=8E=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=EF=BC=8CdataSourceMap=20=E4=BC=9A=E8=A2=AB?= =?UTF-8?q?=E6=B8=85=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/renderer-core/package.json | 1 + packages/renderer-core/src/hoc/index.tsx | 7 +--- packages/renderer-core/src/hoc/leaf.tsx | 6 +-- packages/renderer-core/src/renderer/base.tsx | 40 +++++++++++--------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json index b214a913f..6335ae16d 100644 --- a/packages/renderer-core/package.json +++ b/packages/renderer-core/package.json @@ -18,6 +18,7 @@ "@ali/lib-mtop": "^2.5.1", "@ali/lowcode-datasource-engine": "^1.0.22", "@ali/lowcode-types": "1.0.72", + "@ali/lowcode-utils": "1.0.72", "classnames": "^2.2.6", "debug": "^4.1.1", "fetch-jsonp": "^1.1.3", diff --git a/packages/renderer-core/src/hoc/index.tsx b/packages/renderer-core/src/hoc/index.tsx index b8ab424c5..633ce6352 100644 --- a/packages/renderer-core/src/hoc/index.tsx +++ b/packages/renderer-core/src/hoc/index.tsx @@ -9,12 +9,7 @@ export function compWrapper(Comp: any) { // } render() { - const { forwardRef, ...rest } = this.props; - - return createElement(Comp, { - ...rest, - ref: forwardRef, - }); + return createElement(Comp, this.props); } } diff --git a/packages/renderer-core/src/hoc/leaf.tsx b/packages/renderer-core/src/hoc/leaf.tsx index 678002879..979e09e34 100644 --- a/packages/renderer-core/src/hoc/leaf.tsx +++ b/packages/renderer-core/src/hoc/leaf.tsx @@ -316,12 +316,12 @@ export function leafWrapper(Comp: types.IBaseRenderer, { } } - makeUnitRender() { + makeUnitRender = () => { this.beforeRender(RerenderType.MinimalRenderUnit); const nextProps = getProps(this.leaf?.export?.(TransformStage.Render) as types.ISchema, scope, Comp, componentInfo); const children = getChildren(this.leaf?.export?.(TransformStage.Render) as types.ISchema, scope, Comp); const nextState = { - nextProps, + nodeProps: nextProps, nodeChildren: children, childrenInState: true, }; @@ -331,7 +331,7 @@ export function leafWrapper(Comp: types.IBaseRenderer, { __debug(`${this.leaf?.componentName}(${this.props.componentId}) MinimalRenderUnit Render!`); this.setState(nextState); - } + }; componentWillReceiveProps(nextProps: any) { let { _leaf, componentId } = nextProps; diff --git a/packages/renderer-core/src/renderer/base.tsx b/packages/renderer-core/src/renderer/base.tsx index 60b1d06d8..200bdb409 100644 --- a/packages/renderer-core/src/renderer/base.tsx +++ b/packages/renderer-core/src/renderer/base.tsx @@ -224,20 +224,26 @@ export default function baseRenererFactory() { const dataSource = (schema && schema.dataSource) || {}; // requestHandlersMap 存在才走数据源引擎方案 if (props?.__appHelper?.requestHandlersMap) { - const { dataSourceMap, reloadDataSource } = createDataSourceEngine(dataSource, (this as any), { - requestHandlersMap: props.__appHelper.requestHandlersMap, - }); - this.dataSourceMap = dataSourceMap; - this.reloadDataSource = () => new Promise((resolve) => { - this.__debug('reload data source'); - // this.__showPlaceholder = true; - reloadDataSource().then(() => { - // this.__showPlaceholder = false; - // @TODO 是否需要 forceUpate - // this.forceUpdate(); - resolve({}); - }); - }); + this.__dataHelper = { + updateConfig: (updateDataSource: any) => { + const { dataSourceMap, reloadDataSource } = createDataSourceEngine(updateDataSource, (this as any), { + requestHandlersMap: props.__appHelper.requestHandlersMap, + }); + + this.reloadDataSource = () => new Promise((resolve) => { + this.__debug('reload data source'); + // this.__showPlaceholder = true; + reloadDataSource().then(() => { + // this.__showPlaceholder = false; + // @TODO 是否需要 forceUpate + // this.forceUpdate(); + resolve({}); + }); + }); + return dataSourceMap; + }, + }; + this.dataSourceMap = this.__dataHelper.updateConfig(dataSource); } else { const appHelper = props.__appHelper; this.__dataHelper = new DataHelper(this, dataSource, appHelper, (config: any) => this.__parseData(config)); @@ -531,7 +537,7 @@ export default function baseRenererFactory() { props.key = props.__id; } - let child: any = parentInfo.componentChildren || this.__getSchemaChildrenVirtualDom(schema, scope, Comp); + let child: any = this.__getSchemaChildrenVirtualDom(schema, scope, Comp); const renderComp = (props: any) => engine.createElement(Comp, props, child); // 设计模式下的特殊处理 if (engine && [DESIGN_MODE.EXTEND, DESIGN_MODE.BORDER].includes(engine.props.designMode)) { @@ -590,7 +596,7 @@ export default function baseRenererFactory() { .map((d: IComponentHoc) => d.hoc); } - __getSchemaChildrenVirtualDom = (schema: ISchema, scope: any, Comp: any, childrenMap?: Map) => { + __getSchemaChildrenVirtualDom = (schema: ISchema, scope: any, Comp: any) => { let _children = this.getSchemaChildren(schema); let children: any = []; @@ -606,8 +612,6 @@ export default function baseRenererFactory() { { schema, Comp, - // 有 childrenMap 情况下,children 只计算第一层,不需要遍历多层。 - componentChildren: childrenMap?.get(_child.id)?.props.children || null, }, );