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, }, );