【发布时间】:2019-12-24 06:18:55
【问题描述】:
我进行了一些研究,但无法找到解决方案。
我正在尝试使用 createMuiTheme 创建一个主题,并稍后在 makeStyles 中使用它来检索里面的键。 (示例中的调色板)但是,自定义主题似乎没有在 makeStyles 中应用。
import React from 'react';
import ReactDOM from 'react-dom';
import { makeStyles, createMuiTheme, ThemeProvider } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import red from "@material-ui/core/colors/red";
const useStyles = makeStyles(theme => {
console.log(theme); // Only defaults but not red in palette.
return {
root: {
color: theme.palette.primary[400] // This is not working.
}
};
});
function App() {
const classes = useStyles();
const theme = createMuiTheme({
palette: {
primary: red
}
});
return (
<ThemeProvider theme={theme}>
<Button className={classes.root}>Hook</Button>
</ThemeProvider>
);
}
但是,在另一个使用 useTheme 的组件中,它可以正常工作。我做错了什么?
const useStyles = makeStyles(theme => {
console.log(theme); // Here palette includes the new palette.
return {
root: {
color: theme.palette.primary[400]
}
};
});
function anotherApp() {
const classes = useStyles();
const theme = useTheme();
...
}
【问题讨论】:
-
在函数外初始化主题常量呢?我相信这是我使用的约定。
-
我想我已经尝试过更改顺序/范围,但没有奏效。官方文档中的一些示例遵循了这种方法。
标签: reactjs material-ui