Я працюю над проектом з Typescript, React та Redux (усі працюють в Electron), і я зіткнувся з проблемою, коли включаю один компонент на основі класу до іншого і намагаюся передавати параметри між ними. Вільно кажучи, у мене є така структура для компонента контейнера:
class ContainerComponent extends React.Component<any,any> {
..
render() {
const { propToPass } = this.props;
...
<ChildComponent propToPass={propToPass} />
...
}
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ContainerComponent);
І дочірній компонент:
interface IChildComponentProps extends React.Props<any> {
propToPass: any
}
class ChildComponent extends React.Component<IChildComponentProps, any> {
...
}
....
export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent);
Очевидно, що я включаю лише основи, і в обох цих класах є набагато більше, але я все одно отримую помилку, коли намагаюся запустити те, що мені здається дійсним кодом. Точна помилка, яку я отримую:
TS2339: Property 'propToPass' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<{}, ComponentState>> & Readonly<{ childr...'.
Коли я вперше зіткнувся з помилкою, я подумав, що це тому, що я не передав інтерфейс, що визначає мої реквізити, але я створив це (як ви можете бачити вище), і воно все ще не працює. Цікаво, чи чогось мені не вистачає?
Коли я виключаю опис ChildComponent з коду в ContainerComponent, він стає чудово (за винятком того, що мій ChildComponent не має критичного опису), але разом із ним у JSX Typescript відмовляється його компілювати. Я думаю, що це може мати щось спільне з обтіканням підключень, заснованим на цій статті , але проблеми в цій статті виникли у файлі index.tsx і були проблемами з провайдером, і я отримую свої проблеми в іншому місці.
React.Props
було застаріле !!