javascript - Material-UI 样式 ThemeProvider 错误 : TypeError: Cannot read property 'primary' of undefined

标签 javascript reactjs material-ui

我试图在我的应用程序中包含 @material-ui 包中的一些组件,在根目录下使用 ThemeProvider,但我遇到了一些麻烦。

使用本地定义的样式(没有主题属性)的其他组件渲染正常。

沙箱: https://codesandbox.io/s/theme-provider-issues-t72f3

以下是创建主题的方式:

import React from "react";
import { createMuiTheme } from "@material-ui/core/styles";
import { ThemeProvider } from "@material-ui/styles";
import { blue, white } from "@material-ui/core/colors";

function AppTheme(props) {
  const theme = createMuiTheme({
    palette: {
      primary: blue,
      text: white
    }
  });
  return <ThemeProvider theme={theme}>{props.children}</ThemeProvider>;
}

export default AppTheme;

最佳答案

我不确定您想要使用 text:white 实现什么目的,但这为您的主题创建了无效的结构。 theme.palette.text 应该是一个对象而不是颜色,错误是由 Material-UI 寻找 theme.palette.text.primary 引起的。

将 AppTheme.js 更改为以下内容可以解决问题:

import React from "react";
import { createMuiTheme } from "@material-ui/core/styles";
import { ThemeProvider } from "@material-ui/styles";
import { blue } from "@material-ui/core/colors";

const theme = createMuiTheme({
  palette: {
    primary: blue
  }
});
function AppTheme(props) {
  return <ThemeProvider theme={theme}>{props.children}</ThemeProvider>;
}

export default AppTheme;

Edit Theme Provider Issues

关于javascript - Material-UI 样式 ThemeProvider 错误 : TypeError: Cannot read property 'primary' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657303/

相关文章:

perl 脚本中的 javascript

javascript - 当我们将鼠标悬停在输入类型文本上时如何显示占位符

javascript - React 期望一个赋值或函数调用,但看到一个表达式

javascript - 如何在 Material ui 表单输入字段中添加验证

html - 如何像这样使用 React 和 Material-UI 制作应用栏?

javascript - 在 javascript Date() 中设置年份混淆的日期

javascript - CasperJS - 继续步骤超时

css - React 在组件后面添加背景图片

javascript - Framer Motion - 过时的自定义值 - 更改自定义值不会触发更新

reactjs - 使用 ref 作为 Material UI InputLabel