首页 > 解决方案 > ReactJS Material UI withStyles incl。TS中的主题

问题描述

我尝试将 Material UI Dashboard 转换为 TypeScript。https://github.com/mui-org/material-ui/blob/master/docs/src/pages/page-layout-examples/dashboard/Dashboard.js

目前我面临导出仪表板时无法在 withStyles 函数上设置 CSS 样式定义的问题。

const styles = (theme: Theme) => ({
  root: {
    display: 'flex',
  },
  toolbar: {
    paddingRight: 24, // keep right padding when drawer closed
  },
  toolbarIcon: {
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'flex-end',
    padding: '0 8px',
    ...theme.mixins.toolbar,
  },
  appBar: {
    zIndex: theme.zIndex.drawer + 1,
    transition: theme.transitions.create(['width', 'margin'], {
      easing: theme.transitions.easing.sharp,
      duration: theme.transitions.duration.leavingScreen,
    }),
  },
  .....
});

如果我理解正确,我需要这个主题参考来将样式调整为当前主题。但是调用样式函数时如何获取当前主题呢?

export default withStyles(styles(/*WHAT TO PUT IN HERE?*/))(Dashboard);

标签: reactjstypescriptmaterial-ui

解决方案


export default withStyles(styles)(Dashboard);

withStyles将确定是否需要使用主题调用它。

withTheme或者withStyles(stylesObjectOrCreator, { withTheme: true })仅当您需要theme通过道具访问组件内部时才需要。

API:https ://material-ui.com/customization/css-in-js/#withstyles-styles---options----higher-order-component


推荐阅读