javascript - 合并 Material-UI 中的主题配置设置

标签 javascript arrays material-ui

我要设置cusom theme rules in Material-UI 。我想制作浅色和深色主题,并用一些常见的设置来扩展它们。

我认为将浅色和深色主题的通用设置放入单独的变量中,然后将它们合并在一起是个好主意。

但是我遇到了用默认值覆盖自定义设置的问题。默认情况下,commonSettings 具有所有类型的设置,即使我没有定义它们。通过合并,默认设置只需覆盖自定义设置。所以,也许有人已经遇到过这种情况,并且知道如何将两个设置数组合并为一个。

简单示例:

const commonSettings= createMuiTheme({
    breakpoints: {...},
    direction: 'ltr',
    typography: {...},
});

const lightThemeSettings = createMuiTheme({
    palette: {...},
});

const darkThemeSettings = createMuiTheme({
    palette: {...},
});

// Merge together
const lightTheme = { ...commonSettings, ...lightThemeSettings };
const darkTheme = { ...commonSettings, ...darkThemeSettings };

export default { lightTheme, darkTheme };

最佳答案

感谢Ryan Cogswell 。他给了我正确的想法。

我找到了可行的解决方案。您应该在 createMuiTheme 对象中将 commonSettings 作为 arg 传递:

const commonSettings= {
    breakpoints: {...},
    direction: 'ltr',
    typography: {...},
};

const lightThemeSettings = createMuiTheme({
    palette: {...},
}, commonSettings // Merge together);

const darkThemeSettings = createMuiTheme({
    palette: {...},
}, commonSettings // Merge together);

export default { lightThemeSettings , darkThemeSettings };

关于javascript - 合并 Material-UI 中的主题配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59838973/

相关文章:

javascript - 如何从 angular.js 中的服务进行 $rootScope.$broadcast

javascript - 将字符串分成三 block ,但最少为两 block

javascript - 使用 map 转换数组 - Javascript

javascript - react Material ui自动完成元素焦点onclick

javascript - Tempus Dominus Bootstrap4 需要 moment.js。 (日期时间选择器)

javascript - 我可以使用 JavaScript、Flash 或 Silverlight 通过 HTTP 接收流吗?

c - 赋值从指针生成整数,无需强制转换(C 语言。)

javascript - 基于对象属性的数组和变量名的数组

javascript - 如何在 Material-UI 中更改选项卡组件的大小?

reactjs - 尝试将 MaterialUI 主题 Prop 传递给样式组件时出现“未定义”