Я использую Material-UI, и у меня есть компонент, который является ExpansionPanel .Я также создал тему по умолчанию с createMuiTheme
, и я хочу, чтобы большая часть стилей была оттуда.Я хочу установить серый цвет панели расширения, как это было определено в createMuiTheme
, однако это не удалось ни с помощью MUI className
, ни с использованием style
на панели расширения.Это код моей панели:
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import ExpansionPanel from '@material-ui/core/ExpansionPanel';
import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
import Typography from '@material-ui/core/Typography';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
const styles = theme => ({
root: {
width: '100%',
},
heading: {
fontSize: theme.typography.pxToRem(15),
fontWeight: theme.typography.fontWeightRegular,
},
backgroundColor: theme.palette.secondary.grey
});
function SimpleExpansionPanel(props) {
const { classes } = props;
console.log(`theme.palette.secondary.grey=${classes.backgroundColor}`);
return (
<div className={classes.root}>
<ExpansionPanel className={classes.backgroundColor}
style={{ backgroundColor: classes.backgroundColor }}>
<ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>
<Typography className={classes.heading}>More Info</Typography>
</ExpansionPanelSummary>
<ExpansionPanelDetails>
<Typography>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex,
sit amet blandit leo lobortis eget.
</Typography>
</ExpansionPanelDetails>
</ExpansionPanel>
</div>
);
}
SimpleExpansionPanel.propTypes = {
classes: PropTypes.object.isRequired,
};
export default withStyles(styles, { withTheme: true })(SimpleExpansionPanel);
В частности, строка console.log(
theme.palette.secondary.grey = $ {classes.backgroundColor} );
печатает: SimpleExpansionPanel-backgroundColor-332
.И это код моего createMuiTheme
:
import { createMuiTheme } from '@material-ui/core/styles';
import blue from '@material-ui/core/colors/blue';
const MaterialBlueTheme = createMuiTheme({
palette: {
primary: blue,
secondary: {
main: '#f50057',
grey: '#BDBDBD'
}
},
typography: {
useNextVariants: true,
}
});
export default MaterialBlueTheme;
Наконец, я использую контекст MUI для предоставления темы:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import MuiThemeProvider from '@material-ui/core/styles/MuiThemeProvider';
import App from './App';
import MaterialBlueTheme from './components/layout/MaterialBlueTheme.js';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(<MuiThemeProvider theme={MaterialBlueTheme}>
<App />
</MuiThemeProvider>, document.getElementById('root'));
serviceWorker.unregister();
Как я могу действительно использовать цвет, который хочуот createMuiTheme
?