ReactJS无法导入组件

时间:2017-09-21 22:17:50

标签: reactjs typescript material-ui

我对ReactJS很陌生,但从我收集到的内容中,以下代码应该可以正常工作,而且不会。

我使用npm命令create-react-app创建了一个新的ReactJS项目。 在我的项目文件夹中,我已经使用npm install --save material-ui@next安装了Google的材料ui。

我会根据我尝试从材料-ui'

中导入的内容而得到各种错误。

import Card from 'material-ui/Card'

我使用VS Code作为我的编辑器,如果我在' material-ui / Card'上点击F12。它告诉我是默认导出,上面的导入工作。

import {Card} from 'material-ui'

如果我在&f;材料-ui'上点击F12。它告诉我是一个命名导出,上面的导入工作。

我遇到麻烦的地方是当我尝试导入其他东西时。例如:

import {Card, CardText} from 'material-ui'

卡片导入正常,但当我尝试使用< CardText>我收到以下错误:

React.createElement: type is invalid -- expected a string (for built-in 
components) or a class/function (for composite components) but got: 
undefined. You likely forgot to export your component from the file it's 
defined in.

然而,据我所知,他们都以同样的方式出口。

declare module "material-ui" {
    export import Card = __MaterialUI.Card.Card;
    export import CardText = __MaterialUI.Card.CardText;
}

进一步挖掘:

export interface CardTextProps {
    actAsExpander?: boolean;
    color?: string;
    expandable?: boolean;
    style?: React.CSSProperties;
    className?: string;
}
export class CardText extends React.Component<CardTextProps> {
}

当他们看起来应该工作时,其他进口也失败了:

import getMuiTheme from 'material-ui/styles/getMuiTheme'

Module not found: Can't resolve 'material-ui/styles/getMuiTheme'

但据我所知,它就在那里......

1 个答案:

答案 0 :(得分:1)

我认为您使用的是版本0.19.2的打字稿定义,而不是 material-ui @ next 引用的新版本1.0.0beta。

V1来源甚至没有CardText:https://github.com/callemall/material-ui/tree/v1-beta/src/Card。进口是这样的:

import Card, { CardHeader, CardMedia, CardContent, CardActions } from 'material-ui/Card';

相关文档:https://material-ui-1dab0.firebaseapp.com/demos/cards/