小编典典

TypeScript 3:JSX元素类型“ Component”没有任何构造或调用签名。[2604]

reactjs

我试图将类型为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。


阅读 2536

收藏
2020-07-22

共1个答案

小编典典

我已经遇到过几次了。试试这些:

  1. 输入您PrivateRouteReact.SFC<Props>
  2. 输入您的传入组件为 React.ReactType

关于React类型的最终真理来自于文档

2020-07-22