fix: 低代码组件下缺失 getNode 方法 & 低代码组件多层渲染下报错问题

This commit is contained in:
liujuping.liujupin 2021-09-27 15:57:17 +08:00
parent cb1016c715
commit 0cccb29da9
2 changed files with 16 additions and 9 deletions

View File

@ -444,7 +444,6 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
} }
const renderer = this; const renderer = this;
const { componentsMap: components } = renderer;
class LowCodeComp extends React.Component<any, any> { class LowCodeComp extends React.Component<any, any> {
render() { render() {
@ -458,7 +457,7 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
return createElement(LowCodeRenderer, { return createElement(LowCodeRenderer, {
...extraProps, // 防止覆盖下面内置属性 ...extraProps, // 防止覆盖下面内置属性
schema: newSchema, schema: newSchema,
components, components: renderer.components,
designMode: renderer.designMode, designMode: renderer.designMode,
device: renderer.device, device: renderer.device,
appHelper: renderer.context, appHelper: renderer.context,

View File

@ -1,5 +1,6 @@
import { BuiltinSimulatorHost, Node, PropChangeOptions } from '@ali/lowcode-designer'; import { BuiltinSimulatorHost, Node, PropChangeOptions } from '@ali/lowcode-designer';
import { GlobalEvent, TransformStage } from '@ali/lowcode-types'; import { GlobalEvent, TransformStage } from '@ali/lowcode-types';
import { isReactComponent } from '@ali/lowcode-utils';
import { EngineOptions } from '@ali/lowcode-editor-core'; import { EngineOptions } from '@ali/lowcode-editor-core';
import adapter from '../adapter'; import adapter from '../adapter';
import * as types from '../types/index'; import * as types from '../types/index';
@ -67,14 +68,21 @@ export function leafWrapper(Comp: types.IBaseRenderer, {
const editor = host?.designer?.editor; const editor = host?.designer?.editor;
const { Component } = adapter.getRuntime(); const { Component } = adapter.getRuntime();
if (!isReactComponent(Comp)) {
console.error(`${schema.componentName} component may be has errors: `, Comp);
}
/** 部分没有渲染的 node 节点进行兜底处理 or 渲染方式没有渲染 LeafWrapper */ /** 部分没有渲染的 node 节点进行兜底处理 or 渲染方式没有渲染 LeafWrapper */
let wrapDisposeFunctions: Function[] = [];
if (getNode) {
const leaf = getNode(schema.id); const leaf = getNode(schema.id);
const wrapDisposeFunctions: Function[] = [ wrapDisposeFunctions = [
leaf?.onPropsChange?.(() => container.rerender()), leaf?.onPropsChange?.(() => container.rerender()),
leaf?.onChildrenChange?.(() => container.rerender()), leaf?.onChildrenChange?.(() => container.rerender()),
leaf?.onVisibleChange?.(() => container.rerender()), leaf?.onVisibleChange?.(() => container.rerender()),
]; ];
}
class LeafWrapper extends Component { class LeafWrapper extends Component {
recordInfo: { recordInfo: {