Uncaught TypeError: _materialUi.Styles.ThemeManager is not a function

Uncaught TypeError: _materialUi.Styles.ThemeManager is not a function

我写了下面的代码

import React from 'react';
import mui from 'material-ui';
import injectTapEventPlugin from 'react-tap-event-plugin';
let ThemeManager = new mui.Styles.ThemeManager();
let Colors = mui.Styles.Colors;

injectTapEventPlugin();

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

        this.state = {
            messages : [{id: 1, text: 'Hi'}, {id: 2, text: 'Hello'}, {id: 3, text: 'World'}, {id: 4, text: 'test'}]
        };
    }

    getChildContext() {
        return {
            stores: this.props.stores,
            muiTheme: ThemeManager.getCurrentTheme()
        };
    }

    componentWillMount() {
        ThemeManager.setPalette({
            primary1Color: Colors.blue500
        });     
    }

    render() {
        var messageNodes = this.state.messages.map((message) => {
            return (<div key={message.id}>{message.text}</div>);
        });
        return (<div>{messageNodes}</div>);
    }
}

App.childContextTypes = {
    stores: React.PropTypes.object,
    muiTheme: React.PropTypes.object
};

export default App;

但是一直报错

Uncaught TypeError: _materialUi2.default.Styles.ThemeManager is not a function

网上找了找,很多人都解决了

https://github.com/callemall/material-ui/issues/1439

但相同的解决方案对我不起作用。

注意 我用这个答案回答的原始问题包含:

const ThemeManager = new mui.Styles.ThemeManager();

这是您对 const 的使用,而不是 let。您想使用 let 初始化函数 类。

常量:

The const declaration creates a read-only reference to a value.

发件人:Mozilla Docs

设:

The let statement declares a block scope local variable, optionally initializing it to a value.

发件人:Mozilla Docs

根据您的转译器,您应该会收到 ThemeManager 为 read-only

的错误

因此,在发布您的存储库后,我注意到您使用的是 mui 0.14,经过快速研究后,您似乎不再需要 ThemeManager 的构造函数 - 在之前的版本中您需要。

只需在导入时定义它:

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

发件人:Material-UI

查看标题为:1 的示例。在 Context

中使用 React 生命周期方法