Usando TypeScript con React non dobbiamo più estendere React.Props
affinché il compilatore sappia che tutti gli oggetti di scena del componente react possono avere figli:
interface MyProps { }
class MyComponent extends React.Component<MyProps, {}> {
public render(): JSX.Element {
return <div>{this.props.children}</div>;
}
}
Tuttavia, non sembra essere il caso dei componenti funzionali apolidi:
const MyStatelessComponent = (props: MyProps) => {
return (
<div>{props.children}</div>
);
};
Emette l'errore di compilazione:
Errore: (102, 17) TS2339: la proprietà "figli" non esiste nel tipo "MyProps".
Immagino che questo sia perché non c'è davvero alcun modo per il compilatore di sapere che una funzione vanilla verrà fornita children
nell'argomento props.
Quindi la domanda è: come dovremmo usare i bambini in un componente funzionale senza stato in TypeScript?
Potrei tornare al vecchio modo di MyProps extends React.Props
, ma l' Props
interfaccia è contrassegnata come deprecata e i componenti stateless non hanno o supportano un Props.ref
come ho capito.
Quindi potrei definire l' children
elica manualmente:
interface MyProps {
children?: React.ReactNode;
}
Primo: è ReactNode
il tipo corretto?
Secondo: devo scrivere children come optional ( ?
) altrimenti i consumatori penseranno che children
dovrebbe essere un attributo del component ( <MyStatelessComponent children={} />
) e solleveranno un errore se non viene fornito un valore.
Sembra che mi manchi qualcosa. Qualcuno può fornire un po 'di chiarezza sul fatto che il mio ultimo esempio sia il modo di utilizzare componenti funzionali apolidi con i bambini in React?
@types