diff --git a/packages/amis/src/renderers/Table/TableBody.tsx b/packages/amis/src/renderers/Table/TableBody.tsx index a3255cc4f77..b2c142b7104 100644 --- a/packages/amis/src/renderers/Table/TableBody.tsx +++ b/packages/amis/src/renderers/Table/TableBody.tsx @@ -64,7 +64,9 @@ export interface TableBodyProps extends LocaleProps { } @observer -export class TableBody extends React.Component { +export class TableBody< + T extends TableBodyProps = TableBodyProps +> extends React.Component { componentDidMount(): void { this.props.store.initTableWidth(); } diff --git a/packages/amis/src/renderers/Table/TableContent.tsx b/packages/amis/src/renderers/Table/TableContent.tsx index ecbf18bf459..44e03f5732d 100644 --- a/packages/amis/src/renderers/Table/TableContent.tsx +++ b/packages/amis/src/renderers/Table/TableContent.tsx @@ -136,7 +136,9 @@ export function renderItemActions( ); } -export class TableContent extends React.PureComponent { +export class TableContent< + T extends TableContentProps = TableContentProps +> extends React.PureComponent { render() { const { placeholder, diff --git a/packages/amis/src/renderers/Table/TableRow.tsx b/packages/amis/src/renderers/Table/TableRow.tsx index 6c737c31bd2..3c3fb30ad31 100644 --- a/packages/amis/src/renderers/Table/TableRow.tsx +++ b/packages/amis/src/renderers/Table/TableRow.tsx @@ -15,7 +15,7 @@ import {Action} from '../Action'; import {isClickOnInput} from 'amis-core'; import {useInView} from 'react-intersection-observer'; -interface TableRowProps extends Pick { +export interface TableRowProps extends Pick { store: ITableStore; onCheck: (item: IRow, value: boolean, shift?: boolean) => Promise; onRowClick: (item: IRow, index: number) => Promise | void>; @@ -51,8 +51,10 @@ interface TableRowProps extends Pick { [propName: string]: any; } -export class TableRow extends React.PureComponent< - TableRowProps & { +export class TableRow< + T extends TableRowProps = TableRowProps +> extends React.PureComponent< + T & { // 这些属性纯粹是为了监控变化,不要在 render 里面使用 expanded: boolean; parentExpanded?: boolean; diff --git a/packages/amis/src/renderers/Table/index.tsx b/packages/amis/src/renderers/Table/index.tsx index 240b4e37b36..a54f27d44b4 100644 --- a/packages/amis/src/renderers/Table/index.tsx +++ b/packages/amis/src/renderers/Table/index.tsx @@ -476,7 +476,9 @@ export type TableRendererAction = | 'initDrag' | 'cancelDrag'; -export default class Table extends React.Component { +export default class Table< + T extends TableProps = TableProps +> extends React.Component { static contextType = ScopedContext; static propsList: Array = [ @@ -573,7 +575,7 @@ export default class Table extends React.Component { } ); - constructor(props: TableProps, context: IScopedContext) { + constructor(props: T, context: IScopedContext) { super(props); const scoped = context;