TypeScript、react-router 和 jsx:JSX 元素类型 'Route' 没有任何构造或调用签名
Posted
技术标签:
【中文标题】TypeScript、react-router 和 jsx:JSX 元素类型 \'Route\' 没有任何构造或调用签名【英文标题】:TypeScript, react-router and jsx: JSX element type 'Route' does not have any construct or call signaturesTypeScript、react-router 和 jsx:JSX 元素类型 'Route' 没有任何构造或调用签名 【发布时间】:2016-12-23 03:03:24 【问题描述】:在尝试使用 TypeScript 遵循此演练 React Integrating Routing to Material UI’s Left Nav (or Other Components) 时获取 JSX element type 'Route' does not have any construct or call signatures
。
我的代码:
const Routes = (
<Route path="/" handler=Main>
<IndexRoute handler=ConnectionModule />
</Route>
);
导致 TypeScript 编译器抱怨 Route 和 IndexRount 导入并显示上述错误消息。
这是我的导入语句(包括我自己的 es 模块)。注意从react-router
向中间的导入。
import AppBar, Drawer, FontIcon, List, ListItem, MakeSelectable, TouchTapEvent from 'material-ui';
import deepOrange500 from 'material-ui/styles/colors';
import getMuiTheme, MuiThemeProvider from 'material-ui/styles';
import * as React from 'react';
import Component from 'react';
import Router from 'react-router';
import Route, IndexRoute, Redirect, Link from 'react-router';
import MainState from './MainState';
import ConsoleModule from './ConsoleModule';
import ConnectionModule, ConnectionModuleState from './containers/ConnectionModule';
我正在使用这些版本的相关 npm 包(来自 package.json)
"material-ui": "^0.15.3",
"react": "^15.3.0",
"react-dom": "^15.3.0",
"react-router": "^2.6.1",
"react-tap-event-plugin": "^1.0.0",
"@types/material-ui": "^0.15.31",
"@types/node": "^6.0.32",
"@types/react": "^0.14.29",
"@types/react-dom": "^0.14.14",
"@types/react-router": "^2.0.30",
"typescript": "^2.1.0-dev.20160808",
相关链接:
JSX in TypeScript Using react-router with typescript react-tsx-starter/src/app/client.tsx【问题讨论】:
【参考方案1】:问题出在 react-router 定义文件中,您需要编辑此文件:将名为“_React”的旧全局命名空间更改为名为“React”的新命名空间。
这只发生在使用 npm 类型安装时。
【讨论】:
以上是关于TypeScript、react-router 和 jsx:JSX 元素类型 'Route' 没有任何构造或调用签名的主要内容,如果未能解决你的问题,请参考以下文章
制作一个高阶组件以与 TypeScript 互操作 react-relay 和 react-router
什么在 TypeScript 中声明 react-router 参数
在 Typescript 项目中实现 react-router PrivateRoute
Ionic/React/TypeScript,使用 react-router history.push、history.replace 和 history.goBack 动画触发两次
在 Typescript 中将 React-Router Link 作为组件添加到 Material-UI?
Springboot + mybatis + React+redux+React-router+antd+Typescript: 上线