Неиспользуемый параметр 'mergedProps' в 'connect' выдает ошибку при рендеринге компонента - PullRequest
1 голос
/ 17 июня 2019

Я использую Redux для моего текущего проекта Typescript React, и мне трудно в него попасть. Пока у меня нормально работает подключение компонентов.

interface OwnProps {
    ownProp?: boolean;
}

interface PropsFromState {
    stateProp: any;
}

interface PropsFromDispatch {
    dispatchProp: (...) => void;
}

type MyComponentProps = OwnProps & PropsFromState & PropsFromDispatch;

class MyComponent extends React.Component<MyComponentProps> {...}

const mapStateToProps = ({ componentState }: IAppState, ownProps: OwnProps): PropsFromState => {
    return {
        stateProp: componentState.stateProp,
        ownProp: ownProps.ownProp,
    };
};

const mapDispatchToProps = (dispatch: any): PropsFromDispatch => {
    return {
        dispatchProp: (...) => dispatch(dispatchProp(...))
    };
};
export default connect<PropsFromState, PropsFromDispatch, OwnProps>(
    mapStateToProps,
    mapDispatchToProps
)(MyComponent);

Совсем недавно, хотя я пытался поставить ссылку на подключенный компонент, я обнаружил, что мне нужно включить опцию forwardRef. Поэтому я обновил вызов соединения до

export default connect<PropsFromState, PropsFromDispatch, OwnProps>(
    mapStateToProps,
    mapDispatchToProps,
    null,
    { forwardRef : true }
)(MyComponent);

Но поскольку мне пришлось поместить третий параметр для mergedProps между ними (который, я думал, мог по умолчанию установить на null без каких-либо проблем), tslint теперь выдает ошибку для меня, когда я пытаюсь отобразить компонент, говоря что-то вроде

<MyComponent ownProp ref={ref => this.comp = ref}/>

Type '{ ownProp: true; ref: (ref: Component<Pick<MyComponent, "ownProp" | "stateProp" | "dispatchProp"> & OwnProps, any, any>) => Component<...>; }' is missing the following properties from type 'Readonly<Pick<MyComponentProps, "ownProp" | "stateProp" | "dispatchProp"> & OwnProps>': stateProp, dispatchProp - ts(2739)

Похоже, что компоненту теперь нужны другие реквизиты там, где он не должен их требовать. Есть идеи как с этим бороться?

...