Estou trabalhando em um projeto com Typescript, React e Redux (todos rodando em Electron), e tive um problema ao incluir um componente baseado em classe em outro e tentar passar parâmetros entre eles. Em termos gerais, tenho a seguinte estrutura para o componente do contêiner:
class ContainerComponent extends React.Component<any,any> {
..
render() {
const { propToPass } = this.props;
...
<ChildComponent propToPass={propToPass} />
...
}
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ContainerComponent);
E o componente filho:
interface IChildComponentProps extends React.Props<any> {
propToPass: any
}
class ChildComponent extends React.Component<IChildComponentProps, any> {
...
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent);
Obviamente, estou incluindo apenas o básico e há muito mais nessas duas classes, mas ainda recebo um erro quando tento executar o que me parece um código válido. O erro exato que estou recebendo:
TS2339: Property 'propToPass' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
Quando encontrei o erro pela primeira vez, pensei que era porque não estava passando uma interface definindo meus adereços, mas eu criei isso (como você pode ver acima) e ainda não funciona. Estou pensando, há algo que estou perdendo?
Quando excluo o prop ChildComponent do código no ContainerComponent, ele renderiza muito bem (além de meu ChildComponent não ter um prop crítico), mas com ele no JSX Typescript se recusa a compilá-lo. Acho que pode ter algo a ver com o agrupamento de conexão com base neste artigo , mas os problemas naquele artigo ocorreram no arquivo index.tsx e eram um problema com o provedor, e estou obtendo meus problemas em outro lugar.
React.Props
foi descontinuado !!