Je travaille sur un projet avec Typescript, React et Redux (le tout exécuté dans Electron), et j'ai rencontré un problème lorsque j'inclus un composant basé sur une classe dans un autre et que j'essaie de passer des paramètres entre eux. En gros, j'ai la structure suivante pour le composant conteneur :
class ContainerComponent extends React.Component<any,any> {
..
render() {
const { propToPass } = this.props;
...
<ChildComponent propToPass={propToPass} />
...
}
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ContainerComponent);
Et le composant enfant :
interface IChildComponentProps extends React.Props<any> {
propToPass: any
}
class ChildComponent extends React.Component<IChildComponentProps, any> {
...
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent);
Il est évident que je n'ai inclus que les bases et qu'il y a beaucoup plus dans ces deux classes, mais j'obtiens toujours une erreur lorsque j'essaie d'exécuter ce qui me semble être un code valide. L'erreur exacte que je reçois :
TS2339: Property 'propToPass' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
Lorsque j'ai rencontré l'erreur pour la première fois, j'ai pensé que c'était parce que je ne passais pas dans une interface définissant mes props, mais je l'ai créée (comme vous pouvez le voir ci-dessus) et cela ne fonctionne toujours pas. Je me demande s'il y a quelque chose qui m'échappe ?
Lorsque j'exclue la prop du ChildComponent du code du ContainerComponent, le rendu est parfait (à part le fait que mon ChildComponent n'a pas de prop critique), mais avec la prop dans le JSX Typescript, la compilation est refusée. Je pense que cela pourrait avoir quelque chose à voir avec le connect wrapping basé sur cet article Mais les problèmes évoqués dans cet article se situaient dans le fichier index.tsx et étaient dus à un problème avec le fournisseur.