javascript - 材料 UI:无法让 useStyles 在类组件中工作
问题描述
我正在尝试从我的 Class 组件中访问 useStyles,但我不断收到:
TypeError:无法读取未定义的属性“根”
这是 Materials UI 提供的:useStyles:
const useStyles = makeStyles((theme) => ({
root: {
flexGrow: 1,
},
menuButton: {
marginRight: theme.spacing(2),
},
title: {
flexGrow: 1,
},
}));
export default function ButtonAppBar() {
const classes = useStyles();
return (
<div className={classes.root}>
<AppBar position="static">
<Toolbar>
<IconButton edge="start" className={classes.menuButton} color="inherit" aria-label="menu">
<MenuIcon />
</IconButton>
<Typography variant="h6" className={classes.title}>
News
</Typography>
<Button color="inherit">Login</Button>
</Toolbar>
</AppBar>
</div>
);
}
在他们的示例中,他们在函数中调用了 useStyles()。但是,这不适用于课程。
根据我从研究中得出的结论,这就是我所拥有的:
const useStyles = makeStyles((theme) => ({
root: {
flexGrow: 1,
},
menuButton: {
marginRight: theme.spacing(2),
},
title: {
flexGrow: 1,
},
}));
export default class Navbar extends React.Component {
render() {
const {classes} = this.props;
return(
<div className={classes.root}>
<AppBar position="static">
<Toolbar>
<IconButton edge="start" className={classes.menuButton} color="inherit" aria-label="menu">
<MenuIcon />
</IconButton>
<Typography variant="h6" className={classes.title}>
News
</Typography>
<Button color="inherit">Login</Button>
</Toolbar>
</AppBar>
</div>
)
}
}
解决方案
由于makeStyles
返回一个钩子,您可以在功能组件中调用它。这种创建类的方法在类组件中不起作用。相反,您需要使用withStyles
-- 一个可以包裹在 Class 组件周围的 HOC。
例子:
class MyComponent extends React.Component {
render() {
const { classes } = this.props
return (
<div className={classes.container}>
...
</div>
)
}
}
const ≈ = withStyles({
container: { background: 'red' })
})(MyComponent)
export default ComponentWithClasses
推荐阅读
- artificial-intelligence - 只产生一个孩子的交叉算子
- java - 创建名称为“centralPagamentoPfController”的 bean 时出错:通过字段“服务”表示的依赖关系不满足;
- sql-server - SSRS 导出到 word - 错误:矩形太复杂,无法导出到 Word
- php - 使用另一个带有键的数组作为正在查找的值以及替换它的值来更新多维数组值的最佳方法
- amazon-web-services - 我需要能够在本地远程运行软件,并且能够根据我是否有互联网连接来访问它
- vb.net - 从从输入文件读取的文件名创建超链接以写入输出文本文件
- c# - 如何预热托管在 IIS 中的 asp.net 核心应用程序(a)在网站重新启动和(b)重新部署时?
- ansible - ansible 返回错误!意外的参数类型在起作用:
- android - 您可以将 Recyclerview 位置保存到变量中吗?
- react-native - 比较 React Native TTS 和 STT 工具