javascript - sprid props i react med typescript
När jag först började anpassa TypeScript i React, märkte jag att jag inte kan använda ...props, eftersom TypeScript kontrollerar varje enskild prop som skickas in i komponenterna. Det är bra men det är också irriterande, då jag måste skicka in inbyggda props som id, name etc. deklarativt som props.
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>
);
}
Svar #1
Du bör redigera ditt gränssnitt så att det utökar egenskaperna för HTML input-elementet:
interface MyComponentProps extends InputHTMLAttributes< HTMLInputElement>) {
// add other custom props
}
const MyComponent: React.FC<MyComponentProps> = (props) => (...)
Svar #2
Du kan uttryckligen göra en typomvandling till HTMLAttributes
Deklarera ett gränssnitt som union av komponentens egenskaper med HTML-attribut
interface MyComponentProps = {}
const MyComponent: React.FC<MyComponentProps & HTMLAttributes>...
Detaljerad förklaring kan du hitta här: https://stackoverflow.com/a/40032869/4186110
