引用另一个MUI主题属性

时间:2020-06-09 19:52:51

标签: typescript material-ui

我正在使用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时实际上是不可引用的,其次是它需要引用与之合并的主题。

我想到的一种解决方案是迭代主题图并在其中添加对对象的变异,但是具有基本主题对象然后具有第二个变异区域似乎有点混乱。我不确定是否有其他解决方案,所以我想寻求帮助。

0 个答案:

没有答案