From 9afa0771d13572a38d91308d5007228baa75065d Mon Sep 17 00:00:00 2001 From: "liujuping.liujupin" Date: Mon, 23 Aug 2021 11:20:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9C=A8=20tsx=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=AD=E4=BD=BF=E7=94=A8=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E5=99=A8=20ts=20=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/react-renderer/src/index.ts | 22 ++++++++++++--- .../renderer-core/src/renderer/renderer.tsx | 8 +++--- packages/renderer-core/src/types/index.ts | 27 ++++++++++++------- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/packages/react-renderer/src/index.ts b/packages/react-renderer/src/index.ts index cb003bf92..b7c4ff8ed 100644 --- a/packages/react-renderer/src/index.ts +++ b/packages/react-renderer/src/index.ts @@ -1,4 +1,4 @@ -import React, { Component, PureComponent, createElement, createContext, forwardRef } from 'react'; +import React, { Component, PureComponent, createElement, createContext, forwardRef, ReactInstance, ContextType } from 'react'; import ReactDOM from 'react-dom'; import { adapter, @@ -8,6 +8,7 @@ import { addonRendererFactory, tempRendererFactory, rendererFactory, + types, } from '@ali/lowcode-renderer-core'; import ConfigProvider from '@alifd/next/lib/config-provider'; @@ -36,8 +37,23 @@ adapter.setConfigProvider(ConfigProvider); function factory() { const Renderer = rendererFactory(); - return class ReactRenderer extends Renderer { - constructor(props: any, context: any) { + return class ReactRenderer extends Renderer implements Component { + readonly props: types.IProps; + + context: ContextType; + + setState: ( + state: types.IState, + callback?: () => void, + ) => void; + + forceUpdate: (callback?: () => void) => void; + + refs: { + [key: string]: ReactInstance, + }; + + constructor(props: types.IProps, context: ContextType) { super(props, context); } diff --git a/packages/renderer-core/src/renderer/renderer.tsx b/packages/renderer-core/src/renderer/renderer.tsx index 3ca21e46a..09794f341 100644 --- a/packages/renderer-core/src/renderer/renderer.tsx +++ b/packages/renderer-core/src/renderer/renderer.tsx @@ -5,7 +5,7 @@ import contextFactory from '../context'; import { isFileSchema, goldlog } from '../utils'; import baseRendererFactory from './base'; import divFactory from '../components/Div'; -import { IProps } from '../types'; +import { IProps, ISchema, IState } from '../types'; export default function rendererFactory() { const { createElement, Component, PureComponent, findDOMNode } = adapter.getRuntime(); @@ -46,12 +46,14 @@ export default function rendererFactory() { return class Renderer extends Component { static dislayName = 'renderer'; - static defaultProps = { + state: IState = {}; + + static defaultProps: IProps = { appHelper: null, components: {}, designMode: '', suspended: false, - schema: {}, + schema: {} as ISchema, onCompGetRef: () => { }, onCompGetCtx: () => { }, }; diff --git a/packages/renderer-core/src/types/index.ts b/packages/renderer-core/src/types/index.ts index aac251dd3..123d9e114 100644 --- a/packages/renderer-core/src/types/index.ts +++ b/packages/renderer-core/src/types/index.ts @@ -1,15 +1,22 @@ export interface IProps { - appHelper: any; - components: { [key: string]: any }; - componentsMap: { [key: string]: any }; - designMode: string; - suspended: boolean; schema: ISchema; - onCompGetRef: (schema: ISchema, ref: any) => void; - onCompGetCtx: (schema: ISchema, ref: any) => void; - customCreateElement: (...args: any) => any; - notFoundComponent: any; - faultComponent: any; + components: { [key: string]: any }; + className?: string; + locale?: string; + appHelper?: any; + componentsMap?: { [key: string]: any }; + designMode?: string; + suspended?: boolean; + onCompGetRef?: (schema: ISchema, ref: any) => void; + onCompGetCtx?: (schema: ISchema, ref: any) => void; + customCreateElement?: (...args: any) => any; + notFoundComponent?: any; + faultComponent?: any; +} + +export interface IState { + engineRenderError?: boolean; + error?: Error } export interface IRendererProps {