По моему опыту, использование MuiThemeProvider и createMuiTheme работает прекрасно. Тем не менее, я использую Matarial-UI версии 3.9.2.
MuiThemeProvider должен обернуться вокруг всего вашего приложения. Все, что вам нужно сделать во всех ваших компонентах, это вместо того, чтобы передавать объект стиля со стилями,передать функцию, которая передается в теме.
Пример:
import React from 'react';
import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';
import {NavBar, Routes} from '../'
const theme = createMuiTheme({
palette: {
primary: {
main: 'red'
},
/* whatever else you want to add here */
});
class App extends Component {
render() {
return (
<MuiThemeProvider theme={theme}>
<NavBar />
<Routes />
</MuiThemeProvider>
)
}
, затем в navbar скажем:
import React from 'react';
import { withStyles } from '@material-ui/core';
const styles = theme => ({
root: {
color: theme.palette.primary.main,,
}
})
const NavBar = ({classes}) => {
return <div className={classes.root}>navigation</div>
}
export default withStyles(styles)(NavBar);
Надеюсь, что это помогает, у меня очень хорошо работает!