【发布时间】:2021-12-01 11:44:05
【问题描述】:
使用 MUI 5,我希望使用 ThemeProvider 和 createTheme 在所有使用的 MUI 组件中设置 font-family 和调色板。
我正在使用这个安装的mui:
npm install @mui/material @mui/styled-engine-sc styled-components
使用Typography 组件,这不起作用:
import { createTheme, ThemeProvider } from '@mui/material/styles';
const theme = createTheme({
typography: {
fontFamily: myFontFamily,
},
})
const MyComponent = () => (
<ThemeProvider theme={theme}>
<Typography>Hello, World</Typography>
</ThemeProvider>
)
虽然这确实有效:
const theme = createTheme({
typography: {
fontFamily: myFontFamily,
},
components: {
MuiTypography: {
defaultProps: {
fontFamily: myFontFamily,
},
},
},
});
同样,尝试全局覆盖Chip 的背景颜色,例如,设置theme.palette.primary 并没有应用于<Chip color="primary" />。
const theme = createTheme({
palette: {
primary: {
main: myHexColor,
},
},
})
const MyComponent = () => (
<ThemeProvider theme={theme}>
<Chip label="Hello, World" color="primary" />
</ThemeProvider>
)
我正在努力寻找一种方法来全局覆盖这些样式,而不必将它们应用于我们想要使用的每个组件和组件变体。可以这样做吗?
【问题讨论】:
-
你的起始框架是什么,create-react-app、next.js等?
-
我在使用 CRA 时遇到了同样的问题 - 我已尽一切努力使排版不那么庞大。
-
我正在使用 React 和 Node.js。根据我在下面找到的答案,我认为这里的问题与 mui 样式引擎有关。
标签: reactjs material-ui