我试图将类型为React.Component(或React.FunctionComponent)的变量传递给Route,如下所示:
import React from 'react'; import { Route } from 'react-router-dom'; type PrivateRouteProps = { component: React.Component | React.FunctionComponent; isAuthenticated: boolean; login: (...args: any[]) => any; path: string; }; const PrivateRoute: React.FunctionComponent<PrivateRouteProps> = ({ component: Component, isAuthenticated, login, path, ...rest }) => { return ( <Route path={path} {...rest} render={props => { if (isAuthenticated) { return <Component {...props} />; } else { login(); return null; } }} /> ); };
但我收到此错误:
JSX元素类型“ Component”没有任何构造或调用签名。[2604]
我已经阅读了许多有关此问题的其他主题,但是它们似乎都处理了针对特定组件实现的错误。我不能更改有问题的组件或以不同的方式导入它(就像通常接受的答案一样),因为它可以是 任何 组件。
我正在使用TypeScript 3.1.6,Babel Core 7.1和React 16.6.3。
我已经遇到过几次了。试试这些:
PrivateRoute
React.SFC<Props>
React.ReactType
关于React类型的最终真理来自于文档