这对我来说也是一个非常普遍的问题。发生这种情况是因为 MaterialUI 需要一些基本样式才能工作。你可以在这里找到它们:http: //material-ui.com/#/get-started
因此,除非您将这些样式添加到所有使用 material-ui 的组件中,否则它将显示上述错误,因为它正在寻找不可用的依赖项。如果你去上面的链接,它会告诉你它需要什么样式。但是,每次在我制作的每个组件中都包含这些样式变得非常乏味。
我使用反应混合。它们基本上是可以添加到组件代码中的部分组件。当您将 mixin 添加到组件时,实际上发生的是,mixin 被扩展并添加到您的组件中。很像字符串连接中的变量(可怕的例子,我知道,但它会帮助你理解)。当您将变量添加到字符串连接时,该变量实际上会被其值替换。这就是 React Mixins 发生的事情。
这是我喜欢做的事情:
在我的目录中定义一个 material.jsx 文件,如下所示(基本上是从他们的入门页面复制的):
var React = require('react'),
mui = require('material-ui'),
ThemeManager = new mui.Styles.ThemeManager(),
injectTapEventPlugin = require("react-tap-event-plugin");
injectTapEventPlugin();
module.exports = {
childContextTypes: {
muiTheme: React.PropTypes.object
},
getChildContext: function() {
return {
muiTheme: ThemeManager.getCurrentTheme()
};
}
}
以上只是一个 mixin,它包含 Material-UI 正常运行所需的所有样式。现在我将在所有 Material-UI 组件中使用上述模块作为 mixin。
var React = require('react'),
material = require('./material.jsx'),
mui = require('material-ui'),
FlatButton = mui.FlatButton
module.exports = React.createClass({
mixins: [material],
render: function() {
return <FlatButton>Hello</FlatButton>
}
})
在你的代码中,如果你制作这个 material.jsx 文件并像我一样添加行 mixins: [material] ,它就会开始工作:)