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...'.
私が最初にエラーに遭遇したとき、それは自分の小道具を定義するインターフェースを渡していないためだと思いましたが、それを作成しました(上記のように)、それでも機能しません。何か足りないものはありますか?
ContainerComponentのコードからChildComponentpropを除外すると、(重要なpropがないChildComponentを除いて)問題なくレンダリングされますが、JSXTypescriptでそれを使用するとコンパイルが拒否されます。この記事に基づく接続ラッピングと関係があると思いますが、その記事の問題はindex.tsxファイルで発生し、プロバイダーの問題であり、他の場所で問題が発生しています。
React.Props
、非推奨になりました!!