材料UI& React:ThemeManager不是构造函数

时间:2016-04-05 21:18:05

标签: javascript reactjs material-ui

我在Material UI中添加了一个小型React应用程序,但我相信我正在经历的教程已经过时,他们正在使用旧版本的Material UI。我一直在网络控制台和_materialUi2.default.Styles.ThemeManager is not a constructor中获得Missing class properties transform

Material UI的文档不是很好,我不确定是否有更好的资源来查看他们的最新文档。

我认为问题出在ThemeManager.setPalette()上。有什么建议吗?

import React from 'react';
import mui from 'material-ui';
import MessageList from './MessageList.jsx';

// Material UI
import ThemeManager from 'material-ui/lib/styles/theme-manager';
import Colors from 'material-ui/lib/styles/colors';
import AppBar from 'material-ui/lib/app-bar';
import getMuiTheme from 'material-ui/lib/styles/getMuiTheme';

class App extends React.Component {
  constructor() {
    super();

    ThemeManager.setPalette({
      primary1Color: Colors.blue500,
      primary2Color: Colors.blue700,
      primary3Color: Colors.blue100,
      accent1Color: Colors.pink400
    });
  }

  static childContextTypes = {
    muitheme: React.PropTypes.object
  }

  getChildContext() {
    return {
      muiTheme: ThemeManager.getMuiTheme()
    }
  }

  render() {
    return (
      <div>
        <AppBar title="Chat App"/>
        <MessageList />
      </div>
    );
  }
}

export default App;

2 个答案:

答案 0 :(得分:2)

你是对的教程已经过时了。像这样导入:

import ThemeManager from 'material-ui/lib/styles/theme-manager';

另外:通过上下文传递的密钥必须称为“ muiTheme

在本页的文档中查看数字1:http://www.material-ui.com/#/customization/themes

答案 1 :(得分:1)

是的,教程已经过时了。

而不是这样做:

Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");

您可以在ThemeManager.setPalette({ primary1Color: Colors.blue500, primary2Color: Colors.blue700, primary3Color: Colors.blue100, accent1Color: Colors.pink400 });

等单独的文件夹中定义主题
Theme.jsx

然后在您的主import Colors from 'material-ui/lib/styles/colors'; export default { palette: { primary1Color: Colors.blue500, primary2Color: Colors.blue700, primary3Color: Colors.blue100, accent1Color: Colors.pink400 } }; 中,导入App.jsx并将其设置为Theme.jsx

getMuiTheme(MyTheme)

这应解决问题