Реагировать на свойства Typescript, расширяющие предоставленное свойство "Компонент" - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь создать компонент Breadcrumbs, который на данный момент имеет два props

первый Link prop является необязательным и по умолчанию установлен как таковой

Breadcrumbs.defaultProps = {
  Link: (props) => React.createElement("a", props),
};

второй - breadcrumbs как объектный массив реквизитов из Link компонента prop

поэтому, если бы мой компонент хлебных крошек использовался, я мог бы сделать что-то вроде этого

<Breadcrumbs
  breadcrumbs={[
   { children: "First", href: "first" },
   { children: "Second", href: "second" },
   { children: "Third", href: "third" },
 ]}
/>

И если бы я использовал пользовательский компонент Link, использование выглядело бы примерно так:

import { NavLink } from 'react-router-dom';


<Breadcrumbs
   breadcrumbs={[
    { children: "First", to: "first" },
    { children: "Second", to: "second" },
    { children: "Third", to: "third" },
  ]}
  Link={NavLink}
/>

Вот моя poor :-( попытка связать этот компонент

type Parameters<T> = T extends (...args: infer T) => any ? T : T;

export interface BreadcrumbsProps<C extends React.ElementType<"a"> = any> {
  breadcrumbs: Parameters<BreadcrumbsProps["Link"] & { children: any }>[];
  /**
   * Link
   * component to render your link
   */
  Link?: React.FC<C>;
}

Дайте мне знать, что вы думаете, благодарю за помощь

Спасибо!

...