我有两个组件(智能和傻瓜),如下所示:

// Container component file...

interface OwnProps {
  id: Id;
}

function mapStateToProps(state: State, ownProps: OwnProps) {
    return { isActive: ... };
}

export const Container: any = connect(mapStateToProps, null)(DumbComponent);

// Dumb component file...

interface DumbComponentProperties {
    isActive: boolean;
}

export class DumbComponent extends React.Component<DumbComponentProperties, {}> {
    ...
}


我在DumbComponent内的connect下收到一个红色的警告:


  类型'typeof DumbComponent'的参数不能分配给的参数
  类型'Component OwnProps&{isActive:boolean;
  }'....>


如果通过idid?设置为可选,则可以修复该错误。看起来TypeScript认为DumbComponent也需要OwnProps类型,因为id是作为道具传递给它的?我不明白为什么会这样,不仅属性isActive被传递给DumbComponent吗?

最佳答案

我看不到您的代码有任何问题,但是输入函数mapStateToProps函数是一个好习惯,例如,

function mapStateToProps(state: State, ownProps: OwnProps): DumbComponentProperties { return { isActive: ... };}

09-18 18:19