Pracuję nad projektem z Typescript, React i Redux (wszystkie działające w Electron) i napotykam problem, gdy włączam jeden komponent oparty na klasie do drugiego i próbuję przekazać parametry między nimi. Mówiąc luźniej, mam następującą strukturę komponentu kontenera:
class ContainerComponent extends React.Component<any,any> {
..
render() {
const { propToPass } = this.props;
...
<ChildComponent propToPass={propToPass} />
...
}
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ContainerComponent);
I składnik podrzędny:
interface IChildComponentProps extends React.Props<any> {
propToPass: any
}
class ChildComponent extends React.Component<IChildComponentProps, any> {
...
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent);
Oczywiście uwzględniam tylko podstawy i obie te klasy zawierają znacznie więcej, ale nadal pojawia się błąd, gdy próbuję uruchomić coś, co wygląda na prawidłowy kod. Dokładny błąd, który otrzymuję:
TS2339: Property 'propToPass' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
Kiedy pierwszy raz napotkałem błąd, pomyślałem, że to dlatego, że nie przekazałem interfejsu definiującego moje rekwizyty, ale stworzyłem go (jak widać powyżej) i nadal nie działa. Zastanawiam się, czy czegoś mi brakuje?
Kiedy wykluczam właściwość ChildComponent z kodu w ContainerComponent, renderuje się dobrze (poza tym, że mój ChildComponent nie ma krytycznej właściwości), ale wraz z nim w JSX Typescript odmawia jego kompilacji. Myślę, że może to mieć coś wspólnego z zawijaniem połączeń na podstawie tego artykułu , ale problemy w tym artykule wystąpiły w pliku index.tsx i były problemem z dostawcą, a moje problemy pojawiają się gdzie indziej.
React.Props
został wycofany !!