在 createMuiTheme 中访问以前的主题变量
Posted
技术标签:
【中文标题】在 createMuiTheme 中访问以前的主题变量【英文标题】:Accessing previous theme variables in createMuiTheme 【发布时间】:2018-06-07 05:44:20 【问题描述】:运行 材质 UI 1.0.0-beta.24
我正在使用createMuiTheme
设置一个新主题:
import createMuiTheme from 'material-ui/styles';
const theme = createMuiTheme(
typography:
fontSize: 16
);
export default theme;
如何在此处直接访问我要覆盖的主题? 我想这样做,这是行不通的:
import createMuiTheme from 'material-ui/styles';
const theme = createMuiTheme(
typography:
fontSize: theme.typography.fontSize + 2
);
export default theme;
【问题讨论】:
【参考方案1】:您需要创建一个默认主题的实例并在定义自己的主题时使用它:
import createMuiTheme from 'material-ui/styles';
const defaultTheme = createMuiTheme();
const theme = createMuiTheme(
typography:
fontSize: defaultTheme.typography.fontSize + 2
);
export default theme;
【讨论】:
这样做有没有任何与性能相关的问题? 这行得通,但我最终得到了很多重复样式(不仅仅是覆盖,而是完全相同的声明)。也许这会在构建中清除(我只在开发过程中尝试过),但@zeckdude 的以下回答对我来说很好。【参考方案2】:您也可以创建您的主题,然后在创建theme
后添加到它。
import createMuiTheme from 'material-ui/styles';
const theme = createMuiTheme();
theme.typography =
...theme.typography,
fontSize: theme.typography.fontSize + 2
export default theme;
【讨论】:
这个在不同的情况下是行不通的。例如,如果您使用以上是关于在 createMuiTheme 中访问以前的主题变量的主要内容,如果未能解决你的问题,请参考以下文章
将 type: 'dark' 应用到 MUI 调色板会破坏我的网站,除非它直接在 createMuiTheme() 函数中定义