使用打字稿在反应中传播道具

时间:2020-05-06 11:57:40

标签: javascript reactjs typescript

当我第一次开始在反应中适应打字稿时,我注意到我不能使用...props,因为打字稿会检查组件中传递的每个道具。很棒,但也很烦人,在这里我必须声明性地将本地道具(例如id,name等)传递为道具。


interface MyComponentProps {
  name: string,
  id: string,
  placeholder: string
}

const MyComponent = ({
  name,
  id,
  placeholder
}: MyComponentProps) => {
  return <input type="text" placeholder={placeholder} name={name} id={id}/>
}
export default function App() {
  return (
    <div className="App">
      <MyComponent placeholder="Name" name="something" id="myInput" />
    </div>
  );
}

2 个答案:

答案 0 :(得分:0)

您可以将其显式转换为HTMLAttributes

用HTMLAttributes声明一个类似于组件道具联合的接口

interface MyComponentProps = {}

const MyComponent: React.FC<MyComponentProps & HTMLAttributes>...

详细说明,您可以在这里找到: https://stackoverflow.com/a/40032869/4186110

答案 1 :(得分:0)

您应该编辑界面,使其扩展HTML input元素的属性:

interface MyComponentProps extends InputHTMLAttributes< HTMLInputElement>)  {
  // add other custom props
}

const MyComponent: React.FC<MyComponentProps> = (props) => (...)