【发布时间】:2019-12-29 01:15:30
【问题描述】:
我目前正在使用全局主题覆盖自定义一些组件,希望尽可能多地保持 Material-UI 主题引擎的完整性。我知道我可以使用合成来完成我想做的事情,但我想看看是否可以通过覆盖来实现。
目标
更改 BottomNavigation 组件的背景颜色以使用当前主题的原色,并确保标签在该背景颜色之上获得清晰易读的颜色。
我目前的方法
const theme = createMuiTheme({
palette: {
primary: {
main: 'rgba(217,102,102,1)'
}
},
overrides: {
MuiBottomNavigation: {
root: {
backgroundColor: 'rgba(217,102,102,1)'
}
},
MuiBottomNavigationAction: {
wrapper: {
color: '#fff'
}
}
}
});
此代码完成任务并将底部导航变为红色并将标签/图标变为白色。但是,我希望能够灵活地更改调色板中的原色并相应地更新组件。
我想做的事
const theme = createMuiTheme({
palette: {
primary: {
main: 'rgba(217,102,102,1)'
}
},
overrides: {
MuiBottomNavigation: {
root: {
backgroundColor: 'primary.main'
}
},
MuiBottomNavigationAction: {
wrapper: {
color: 'primary.contrastText'
}
}
}
});
通过这种方式,我可以轻松地更新原色,而不必担心在我的覆盖中更改对它的每个引用。我意识到我可以将rgba 值提取到const 中,这将实现我的部分目标,但我不知道如何访问像contrastText 这样有用的东西,以防我选择更轻的主颜色。
那么 - 有没有人知道在主题覆盖定义中引用主题调色板颜色的方法?任何帮助将不胜感激!
【问题讨论】:
标签: reactjs material-ui