Sto lavorando a un progetto con Typescript, React e Redux (tutti in esecuzione in Electron) e ho riscontrato un problema quando includo un componente basato sulla classe in un altro e provo a passare parametri tra di loro. In parole povere, ho la seguente struttura per il componente contenitore:
class ContainerComponent extends React.Component<any,any> {
..
render() {
const { propToPass } = this.props;
...
<ChildComponent propToPass={propToPass} />
...
}
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ContainerComponent);
E il componente figlio:
interface IChildComponentProps extends React.Props<any> {
propToPass: any
}
class ChildComponent extends React.Component<IChildComponentProps, any> {
...
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent);
Ovviamente sto solo includendo le basi e c'è molto di più in entrambe queste classi, ma ricevo ancora un errore quando provo ad eseguire quello che mi sembra codice valido. L'errore esatto che ricevo:
TS2339: Property 'propToPass' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
Quando ho riscontrato l'errore per la prima volta ho pensato che fosse perché non stavo passando un'interfaccia che definiva i miei oggetti di scena, ma l'ho creata (come puoi vedere sopra) e ancora non funziona. Mi chiedo, c'è qualcosa che mi manca?
Quando escludo il prop ChildComponent dal codice in ContainerComponent, viene visualizzato correttamente (a parte il mio ChildComponent che non ha un prop critico) ma con esso nel Typescript JSX si rifiuta di compilarlo. Penso che potrebbe avere qualcosa a che fare con il connect wrapping basato su questo articolo , ma i problemi in quell'articolo si sono verificati nel file index.tsx ed erano un problema con il provider, e sto riscontrando i miei problemi altrove.
React.Props
è stato deprecato !!