1

我最近从 v0.14.4 迁移到 Google Material UI (Material UI v0.15.0-beta.1),由于最新的 reactjs v15.0.1,还升级了用于表单验证的 formsy-material-ui 和 formsy-react 包装器。

这是一个大代码架构,抱歉无法附上代码片段,无论如何我收到一个错误消息muiTheme.prefix is not a function

尽管我一直在遵循https://github.com/callemall/material-ui/blob/master/CHANGELOG.md上的材料 ui 更改日志文档提供的指南

希望得到一些帮助,让我知道,如果有什么需要更好地解释这个问题。

4

2 回答 2

1

遇到问题了,我缺少要在 getMuiTheme 方法中传递的主题上下文lightBaseTheme,如下所示。

  getChildContext() {
    return {muiTheme: getMuiTheme(lightBaseTheme)};
  }
于 2016-04-22T07:15:58.763 回答
0

我的猜测是你没有对这个重大变化做任何事情:

到目前为止,您需要在上下文中提供主题,请参阅: http: //www.material-ui.com/#/customization/themes

因此,如果您不指定主题,material-ui 现在似乎会中断。您可能可以将整个应用程序包装在 MuiThemeProvider 中并使其恢复工作。

你需要类似的东西:

...
import MuiThemeProvider from "material-ui/styles/MuiThemeProvider"
import getMuiTheme from "material-ui/styles/getMuiTheme"
// import the colors wanted to customize your theme here, if you want to
import { orange500 } from "material-ui/styles/colors"
...
// customize your theme here
const muiTheme = getMuiTheme({
  palette: {
    accent1Color: orange500
  }
})
...
class MyApp extends Component {


  render() {
    return (
      <MuiThemeProvider muiTheme={muiTheme}>
        <div>
          <Header />
          <Body />
          <Footer />
        </div>
      </MuiThemeProvider>
    )
  }
}

需要注意的一件事是 MuiThemeProvider 只需要一个孩子,因此无法避免封装 div;当然,如果你想让事情变得更干净,你可以创建另一个 AppContainer 组件,但你明白了。

于 2016-04-20T12:11:32.063 回答