我正在尝试建立自己的调色板颜色以匹配我在Material UI中的品牌。到目前为止,当将背景色用作按钮的背景色时,我只能使原色和副色起作用。当我添加自己的变量名或使用“重音”(如Material UI网站上的示例所示)时,该按钮默认为灰色。
这是我的MyTheme.js代码:
import { createMuiTheme } from 'material-ui/styles'; import purple from 'material-ui/colors/purple'; export default createMuiTheme({ palette: { primary: { // works main: '#165788', contrastText: '#fff', }, secondary: { // works main: '#69BE28', contrastText: '#fff', }, companyBlue: { // doesnt work - defaults to a grey button main: '#65CFE9', contrastText: '#fff', }, companyRed: { // doesnt work - grey button main: '#E44D69', contrastText: '#000', }, accent: { // doesnt work - grey button main: purple, // import purple doesnt work contrastText: '#000', }, }, });
这是我的App.js代码:
import React, { Component } from 'react'; import Button from 'material-ui/Button'; import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; import MyTheme from './MyTheme'; import './App.css'; import { withStyles } from 'material-ui/styles'; import PropTypes from 'prop-types'; const styles = theme => ({ button: { margin: theme.spacing.unit, }, input: { display: 'none', }, }); class App extends Component { constructor(props) { super(props); } render() { const { classes } = this.props; return ( <MuiThemeProvider theme={MyTheme}> <Button variant="raised" > Default </Button> <Button variant="raised" color="primary" className={classes.button}> Primary </Button> <Button variant="raised" color="secondary" className={classes.button}> Secondary </Button> <Button variant="raised" color="companyRed" className={classes.button}> Company Red </Button> <Button variant="raised" color="accent" className={classes.button}> Accent </Button> </MuiThemeProvider> ); } } App.propTypes = { classes: PropTypes.object.isRequired, }; export default withStyles(styles)(App);
除了需要将purple您的内容更改MyTheme为类似内容外purple[500],我不确定为什么这对您不起作用。您确定可以用primary和以外的其他方法覆盖secondary吗?
purple
MyTheme
purple[500]
primary
secondary
无论如何,这是一种解决方法:
在MyTheme.js:
MyTheme.js
accent: { backgroundColor: purple[500], color: '#000' }
然后在App.js:
App.js
<Button variant="raised" style={MyTheme.palette.accent} className={classes.primary}> Accent </Button>
这里的工作示例。