3 回答
TA贡献1813条经验 获得超2个赞
在 Material v5 中你可以扩展CommonColors
declare module "@mui/material/styles/createPalette" {
interface CommonColors {
layout: {
offBlack: string;
offWhite: string;
}
}
}
const colors = createTheme({
palette: {
common: {
layout: {
offBlack: "#14142B",
offWhite: "#FCFCFC",
},
},
},
});
// In a component
const useStyles = makeStyles((theme) => ({
target: {
backgroundColor: theme.palette.common.layout.offBlack
}
}));
TA贡献1820条经验 获得超9个赞
我认为覆盖使用您的ITheme类似内容的东西会更方便,如下所示:
theme.d.ts
declare module "@material-ui/core/styles" {
export interface ITheme extends Theme {
palette: IPaletteOptions;
}
// Keep overriding these things in your app
// In this case returns `ITheme`
export function createMuiTheme(options?: ThemeOptions, ...args: object[]): ITheme;
// returns `ITheme`
export function useTheme<T = ITheme>(): T;
}
然后你不再需要在你的theme/index.ts:
export default createMuiTheme({ palette });
如果使用useTheme,它应该ITheme按预期返回。
注意:我还更新了codesandbox:https://codesandbox.io/s/charming-pasteur-s6h8v ?file=/src/Component.tsx
TA贡献1873条经验 获得超9个赞
我通过使用这个来实现这个工作:
declare module '@material-ui/styles' {
export interface DefaultTheme extends CustomTheme {}
}
请注意,模块中不包含“核心”。
我的完整代码:
import theme from './theme';
type CustomTheme = {
palette: typeof theme;
};
declare module '@material-ui/styles' {
export interface DefaultTheme extends CustomTheme {}
}
添加回答
举报