Поздно к вечеринке, с "@types/react-router-dom": "^4.3.4"
и "@types/react": "16.9.1"
, и если вы используете RouteProps
, вы, вероятно, получите ту же ошибку.
Тип элемента JSX 'Компонент'не имеет никакой конструкции или подписи вызовов.[2604]
Это потому, что в интерфейсе RouteProps
, component
определен как необязательный, следовательно, он может быть неопределенным.
export interface RouteProps {
location?: H.Location;
component?: React.ComponentType<RouteComponentProps<any>> | React.ComponentType<any>;
render?: ((props: RouteComponentProps<any>) => React.ReactNode);
children?: ((props: RouteChildrenProps<any>) => React.ReactNode) | React.ReactNode;
path?: string | string[];
exact?: boolean;
sensitive?: boolean;
strict?: boolean;
}
Просто проверьте, еслиcomponent
ложно это исправит.
function PrivateRoute({ component: Component, ...rest }: RouteProps) {
if (!Component) return null;
return (
<Route
{...rest}
render={props =>
fakeAuth.isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
)
}
/>
);
}