Когда вы создаете свою собственную тему, передайте ее ThemeProvider
следующим образом:
import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';
...
const theme = createMuiTheme({
palette: {
secondary: {
main: '#287a9f'
}
}
});
function App() {
return (
<ThemeProvider theme={theme}>
<Children />
</ThemeProvider>
)
}
И есть много способов доступа к переменным темы , Например, вы можете использовать makeStyles
или useTheme
:
makeStyles:
import { makeStyles } from '@material-ui/core/styles';
const useStyles = makeStyles(theme => ({
myComp: { backgroundColor: theme.palette.primary.light }
});
function DeepChild() {
const classes = useStyles();
return <Component className={classes.myComp} />;
}
useTheme:
import { useTheme } from '@material-ui/core/styles';
function DeepChild() {
const theme = useTheme();
return <Component color={theme.palette.primary.light} />;
}
Обратите внимание, что свойство color
компонента AppBar
поддерживает одно из
["default","inherit","primary","secondary","transparent"]
Таким образом, чтобы переопределить цвет для * Компонент 1032 *, как в вашем примере, вам нужно передать пользовательский класс:
import { makeStyles } from '@material-ui/core/styles';
import AppBar from '@material-ui/core/AppBar';
const useStyles = makeStyles(theme => ({
appBar: { backgroundColor: theme.palette.primary.light }
});
function DeepChild() {
const classes = useStyles();
return <AppBar className={classes.appBar} />;
}