reactjs - 材质 UI V5:makeStyles 在材质 ui V5 中不起作用
问题描述
我试图升级材料 v5(从 v4)。根据文档,建议使用 Styled 或 sx API,但我想使用 v4 中的 makeStyles 方法。即使它在 v5 中已被弃用,但可以使用(根据文档)。但是我无法在 makeStyles 回调函数中获取主题变量,导致无法访问未定义的属性(例如,theme.breakpoints.between ...)
import makeStyles from '@mui/styles/makeStyles';
const useStyles = makeStyles((theme) => ({
// here theme variable is undefined
appBar: {
backgroundColor: "white",
height: "60px",
padding: "0px 5em",
[theme.breakpoints.between("xs", 'lg')]: {
padding: "0px",
},
},
.......
这是我的 index.js
import { ThemeProvider, StyledEngineProvider } from "@mui/material/styles";
import theme from "./theme/theme"
ReactDOM.render(
<React.StrictMode>
<StyledEngineProvider injectFirst>
<ThemeProvider theme={theme}>
<CssBaseline />
<App />
</ThemeProvider>
</StyledEngineProvider>
</React.StrictMode>,
document.getElementById("root")
);
主题.js
import { createTheme, responsiveFontSizes, adaptV4Theme } from "@mui/material/styles";
import baseTheme from "./baseTheme";
let theme = createTheme(adaptV4Theme(baseTheme));
theme = responsiveFontSizes(theme);
export default theme;
我还注意到,StyledEngineProvider 没有被导入属性(跟随这个)
包.json
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
"@fortawesome/fontawesome-svg-core": "^1.2.32",
"@fortawesome/free-solid-svg-icons": "^5.15.1",
"@fortawesome/react-fontawesome": "^0.1.13",
"@mui/icons-material": "^5.1.0",
"@mui/lab": "^5.0.0-alpha.54",
"@mui/material": "^5.1.0",
"@mui/styles": "^5.1.0",
我是否必须安装其他软件包才能使其正常工作?
解决方案
好的,刚遇到这个问题。makeStyles
andstyled
使用不同的上下文来获取主题。为了让您的 makeStyles 访问您需要的主题import { ThemeProvider } from '@mui/styles'
。但要使用 styled(),您需要import { ThemeProvider } from '@mui/material'
.
如果你同时使用 styled() 和 makeStyles 进行迁移,你需要同时拥有这两个主题提供者......
推荐阅读
- angular - 使用点击事件Angular 8一次打开一个键值
- javascript - 如何将函数返回的值获取到 React 中的另一个类中
- java - 如何从 Dailymotion 的 URL 获取视频下载大小
- typescript - 选择哪种 OOP 方法?
- autodesk-forge - 是否有可能获得 Revit 套件?
- mysql - 插入中的 MySQL SELECT
- javascript - 延迟加载模块的角度 onSameUrlNavigation
- cors - 在服务器上调用 axios,但在页面上调用 axios,而不是在启动时获取或异步数据
- android - 如何为图标启动器设置不同形状的图标?
- asp.net-core - 帐户锁定时间跨度溢出