react 函数组件使用typescript的泛型问题

import React, {FC} from 'react'
import {Table} from 'antd'
import {ColumnProps} from 'antd/lib/table'
interface GlobalTableProp<T> {
  columns: ColumnProps<T>[]
  datasource: T[]
}
// 这个地方的T怎么办 该怎么写
const GlobalTable: FC<GlobalTableProp<T>> = ({columns, datasource}) => {
  return (
    <div>
      <Table columns={columns} dataSource={datasource} />}
    </div>
  )
}
export default GlobalTable这里
阅读 16.1k
3 个回答

我因为同时需要 Props、泛型、FunctionComponent 组件类型,所以遇到和楼主同样的问题,目前暂时这样解决:

import React, { FC } from 'react';

export interface Base {
    id: number | string;
}

export interface TableProps<T extends Base> {
    list: T[]
}

export const Table = <T extends Base>({ list }: TableProps<T>) => (
    <table>
        {list.map(({ id }) => (
            <tr key={id}></tr>
        ))}
    </table>
);

// 断言箭头函数为 FC,否则此处无法提示函数组件的 React 专用属性
(Table as FC).displayName = 'Table';

可以不用 FC

interface GlobalTableProp<T> {
  columns: ColumnProps<T>[]
  datasource: T[]
}

const GlobalTable = <T>(props: GlobalTableProp<T>) => {
  return (
    <div>
      <Table columns={columns} dataSource={datasource} />}
    </div>
  )
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏