Я просто попытался обновить приложение React до
response-router - от 4.0.19 до 4.0.20
реакция - 16,0.30 - 16,0,34
typescript - версия "2.7.0-insiders.20180108"
В моем приложении везде, где я использую 'withRouter', теперь получаю загадочные ошибки Typescript. Я даже заменил все реквизиты интерфейса "any", чтобы попытаться заставить его работать.
import * as React from 'react';
import { Switch, Route, withRouter} from 'react-router-dom';
import { Login } from './Login';
import { connect } from 'react-redux';
import { RootAction, RootState } from './_redux';
class MainForm extends React.Component<any> {
constructor(props: any) {
super(props);
}
render() {
return (
<Switch>
<Route exact={true} path="/" component={Login}/>
<Route path="/accounts" component={AccountsView}/>
</Switch>
);
}
}
const mapStateToProps = (state: RootState) => ({
state
});
export const Main = withRouter(connect(mapStateToProps)(MainForm);
ошибка TS2345: аргумент типа 'ComponentClass > и { WrappedComponent: ComponentType; } 'не может быть отнесен к параметр типа "ComponentType > ". Тип 'ComponentClass > и {WrappedComponent: ComponentType; } 'не присваивается типу 'StatelessComponent > '. Введите "ComponentClass" и {WrappedComponent: ComponentType; } 'не соответствует подписи' (реквизит: RouteComponentProps и {children?: ReactNode; }, context?: any): ReactElement | нуль".
Если я преобразую последнюю строку в следующую строку:
export const Main = connect(mapStateToProps)(MainForm);
Я не получаю ошибок. серьезно расстроены здесь. Благодаря
EDIT, я изменился на
export const Main = connect(mapStateToProps)(withRouter(MainForm));
как это предложил Майанк Шукла. но теперь получите ошибку:
ошибка TS2345: аргумент типа "ComponentClass > " не присваивается параметру типа 'ComponentType < {state: RootState; } и DispatchProp > '. Тип 'ComponentClass > ' не присваивается типу 'StatelessComponent < {state: RootState; } & DispatchProp > ". Тип 'ComponentClass > ' не соответствует сигнатуре '(реквизиты: {state: RootState;} и DispatchProp и { дети?: ReactNode; }, context?: any): ReactElement | нуль".