MUI Autocomplete Typescript:PaperComponents 函数参数的类型是什么

MUI Autocomplete Typescript: What is the type of PaperComponents function parameter

MUI 的自动完成有一个 属性 PaperCompomponent 允许你传递你自己的反应组件。 属性 是一个以 properties 作为参数的函数,可用于将其传递给您的组件。

在 Typescript 中,我想输入 properties 参数。有谁知道确切的类型?它不是可以从 MUI 本身导入的 PaperProps。 自动完成正在使用 React.JSXElementConstructor<React.HTMLAttributes<HTMLElement>>;,这似乎是正确的,但是当访问 children 时,我收到一个打字稿错误,指出 properties.children 在这种类型中不存在。

这是一个非常简单的示例,可以让您了解我的意思。

Autocompleter.tsx

 <Autocomplete
   id='autocompleter'
   PaperComponent={ (properties) => <Component properties={ properties } /> }
 />

Component.tsx

interface ComponentProps {
 properties: ???;
}

const Component: FunctionComponent<ComponentProps> = ({ properties }): ReactElement => (
 <Container onMouseDown={ properties.children[2].props.onMouseDown }>
   <div {...properties}>
   <div> Some Content</div>
 </Container>
))


您可以创建添加子属性:

interface ComponentProps {
  // Obtained from the source code
  properties: React.JSXElementConstructor<React.HTMLAttributes<HTMLElement>>;

  // Additional prop
  children: React.ReactNode;
}

const Component: FunctionComponent<ComponentProps> = ({ properties, children }): ReactElement => (
  <Container onMouseDown={ properties.children[2].props.onMouseDown }>
    <div {...properties}>
    <div> Some Content</div>
  </Container>
))

您不必通过 properties 访问 children 道具,它可以是您组件中的另一个道具。