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 {