除了 PublicFieldProps 和 InjectedFieldProps 之外,所有的 react-admin 字段组件 props 类型都应该扩展 TypographyProps 吗?

Should all react-admin field component props types extend TypographyProps besides PublicFieldProps and InjectedFieldProps?

我在 react-admin 字段组件 props types 中注意到了这种类型模式:

export interface MyCustomFieldProps
    extends PublicFieldProps,
        InjectedFieldProps,
        TypographyProps {
    [myCustomFieldExtraProp: string]: any
}

但有时 TypographyProps 没有扩展。我不知道为什么。我想也许字段组件道具类型应该只在 return 是排版组件时扩展 TypographyProps。

一些例子:

日期字段

export interface DateFieldProps
    extends PublicFieldProps,
        InjectedFieldProps,
        TypographyProps {
    locales?: string | string[];
    options?: object;
    showTime?: boolean;
}

文件字段

export interface FileFieldProps extends PublicFieldProps, InjectedFieldProps {
    src?: string;
    title?: string;
    target?: string;
    download?: boolean | string;
    ping?: string;
    rel?: string;
    classes?: object;
}

但是后来我发现一些字段组件 return 是 Typography 但不扩展 TypographyProps。因此,我的想法无效。

喜欢这个:

电子邮件字段

export interface EmailFieldProps
    extends PublicFieldProps,
        InjectedFieldProps,
        AnchorHTMLAttributes<HTMLAnchorElement> {}

好吧,我花了一些时间来进一步调查。看起来只有 return 一个 Typography 组件的字段是唯一扩展 TypographyProps 的字段。

  • TextField - Returns value 和 emptyText 的排版。
  • NumberField - Returns value 和 emptyText 的排版。
  • DateField - Returns value 和 emptyText 的排版。

可能 return 其他组件而不是 Typography 的字段不扩展 TypographyProps:

  • UrlField - Returns Link 值。 emptyText 的排版。
  • EmailField - Returns Link 值。 emptyText 的排版。
  • FileField - Returns div 的值。 emptyText 的排版。

我想它是以这种方式实现的,所以我们在将 Typograph 道具传递给期望值组件(不是 Typography)发生变化的字段组件时不会感到困惑。因为它仅应用于 emptyText 组件(排版)。