我正在做一个项目,使用的是 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 的代码中排除 ChildComponent 道具时,它呈现得很好(除了我的 ChildComponent 没有一个关键道具之外) ,但是在 JSX Type 脚本中它拒绝编译它。我认为这可能与基于 这篇文章的连接包装有关,但是那篇文章中的问题出现在 index.tsx 文件中,是提供程序的问题,我正在其他地方解决这个问题。