From 5bd68ee6b448fa58b022870b3f8175d8b77febde Mon Sep 17 00:00:00 2001 From: liujuping Date: Thu, 4 Aug 2022 17:58:24 +0800 Subject: [PATCH] fix: fix render module state expression initialization exception --- packages/react-simulator-renderer/src/renderer-view.tsx | 7 ++++++- packages/renderer-core/src/renderer/page.tsx | 7 +++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/react-simulator-renderer/src/renderer-view.tsx b/packages/react-simulator-renderer/src/renderer-view.tsx index d978494c0..50c5481ee 100644 --- a/packages/react-simulator-renderer/src/renderer-view.tsx +++ b/packages/react-simulator-renderer/src/renderer-view.tsx @@ -4,7 +4,7 @@ import cn from 'classnames'; import { Node } from '@alilc/lowcode-designer'; import LowCodeRenderer from '@alilc/lowcode-react-renderer'; import { observer } from 'mobx-react'; -import { getClosestNode, isFromVC } from '@alilc/lowcode-utils'; +import { getClosestNode, isFromVC, isReactComponent } from '@alilc/lowcode-utils'; import { GlobalEvent } from '@alilc/lowcode-types'; import { SimulatorRendererContainer, DocumentInstance } from './renderer'; import { host } from './host'; @@ -241,6 +241,11 @@ class Renderer extends Component<{ }); } + if (!isReactComponent(Component)) { + console.error(`${viewProps._componentName} is not a react component!`); + return null; + } + return createElement( getDeviceView(Component, device, designMode), viewProps, diff --git a/packages/renderer-core/src/renderer/page.tsx b/packages/renderer-core/src/renderer/page.tsx index 17e3ef4c8..817b9b128 100644 --- a/packages/renderer-core/src/renderer/page.tsx +++ b/packages/renderer-core/src/renderer/page.tsx @@ -20,10 +20,9 @@ export default function pageRendererFactory(): IBaseRenderComponent { async componentDidUpdate(prevProps: IBaseRendererProps, _prevState: {}, snapshot: unknown) { const { __ctx } = this.props; - const prevState = this.__parseData(prevProps.__schema.state, __ctx); - const newState = this.__parseData(this.props.__schema.state, __ctx); - // 当编排的时候修改schema.state值,需要将最新schema.state值setState - if (JSON.stringify(newState) != JSON.stringify(prevState)) { + // 当编排的时候修改schema.state值,需要将最新 schema.state 值 setState + if (JSON.stringify(prevProps.__schema.state) != JSON.stringify(this.props.__schema.state)) { + const newState = this.__parseData(this.props.__schema.state, __ctx); this.setState(newState); }