我正在使用Material UI主题化,而我想做的是覆盖SvgIcon
填充色,使其等于字体颜色(或将来的其他颜色)。我遇到的麻烦是从替代部分中引用字体颜色。现在,还有更多内容。我构造主题的方法是使用基础对象,然后将其与彩色主题对象进行深度合并。像这样:
base.tsx
export const baseTheme: ThemeOptions = {
...
overrides: {
MuiSvgIcon: {
root: {
fill: {use theme.palette.text.primary here}
}
}
},
...
}
lightTheme.tsx
export const lightTheme = {
palette: {
text: {
primary: 'cyan',
}
},
...
};
ThemeProvider.tsx
const themeMap: { [key: string]: Theme } = {
lightTheme: createMuiTheme(deepmerge(lightTheme, baseTheme)),
darkTheme: createMuiTheme(deepmerge(darkTheme, baseTheme))
};
因此,显而易见的两件事是theme
在创建baseTheme
时实际上是不可引用的,其次是它需要引用与之合并的主题。
我想到的一种解决方案是迭代主题图并在其中添加对对象的变异,但是具有基本主题对象然后具有第二个变异区域似乎有点混乱。我不确定是否有其他解决方案,所以我想寻求帮助。