- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下测试代码(遵循 Material UI typescript 文档中的指南)
import * as React from 'react';
import { Theme } from '@material-ui/core/styles/createMuiTheme';
import { WithStyles } from '@material-ui/core';
import { createStyles } from '@material-ui/core/styles';
import Drawer from '@material-ui/core/Drawer';
const drawerWidth = 240;
const styles = (theme: Theme) => createStyles({
root: {
flexGrow: 1,
height: 430,
zIndex: 1,
overflow: 'hidden',
position: 'relative',
display: 'flex',
},
appBar: {
zIndex: theme.zIndex.drawer + 1,
},
drawerPaper: {
position: 'relative',
width: drawerWidth,
},
content: {
flexGrow: 1,
backgroundColor: theme.palette.background.default,
padding: theme.spacing.unit * 3,
minWidth: 0,
},
toolbar: theme.mixins.toolbar,
});
interface Props extends WithStyles<typeof styles> {}
interface State {}
export class Sidebar extends React.Component<Props, State> {
render() {
const { classes } = this.props;
return (
<Drawer
style={{position: 'relative', width: drawerWidth}}
variant='permanent'
classes={{
paper: classes.drawerPaper,
}}
>
<div className={classes.toolbar} />
</Drawer>
);
}
}
export default Sidebar;
现在,如果我通过以下方式尝试在其他地方使用此组件:
import * as React from 'react';
import Grid from '@material-ui/core/Grid';
import Sidebar from './Sidebar';
export class Main extends React.Component {
public render() {
return (
<Grid container>
<Grid container item xs={12}>
<Sidebar />
</Grid>
</Grid>
);
}
}
export default Main;
我得到的错误是 classes
在主要组件和 cannot read property drawerPaper of undefined
中丢失在 SideBar 组件中。我假设 extend WithStyles<typeof styles>
可以解决该问题,但在尝试导入和使用 SideBar
时仍然无济于事成分。我对 Material UI 主题的经验很少,因此非常感谢任何指导。
最佳答案
您还没有将样式附加到组件。在您的代码中,您创建的样式与其余代码之间没有任何联系。
为此,您需要使用 HOC withStyles
。而不是 export default Sidebar;
只是 export default withStyles(styles)(Sidebar);
关于reactjs - Material UI Typescript - createStyles 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50971569/
这是我的 Typescript 代码中的 createStyles 语句: const useStyles = makeStyles((theme: Theme) => createStyles(
我正在尝试将我的 css 从一个 less 文件转换为 Material createStyles,但我无法理解它是如何工作的。 我了解 createstyles 的基础知识,但我的子选择器无法正常工
我有以下测试代码(遵循 Material UI typescript 文档中的指南) import * as React from 'react'; import { Theme } from '@m
我有一个工具栏,其中使用了出现在左端的 2 个图标。目前,我正在使用这种样式方法: const useStyles = makeStyles((theme: Theme) => createSty
我一直在使用 Material UI 处理 TypeScript 问题所需的这种结构,这真的让我很烦恼,每次我想为组件设置样式时,我都需要记住如何将 2 个不同的函数组合成会产生钩子(Hook)的东西
我正在使用 TypeScript 学习 React,并在前端使用 Material UI 框架。我尝试让媒体查询正常工作,但出现错误: Uncaught TypeError: Cannot read
我是一名优秀的程序员,十分优秀!