reactjs - 在 React + Material UI 中使用 prop 作为类名
问题描述
我有一个简单的 React 组件,它应该带有一个status
道具。的值可以是initialized
,connected
或disconnected
基于这个道具的值,我想添加一个同名的 CSS 类,同时使用材料 UI 样式。
我有这样的东西,它为元素提供了类名,但它与 MaterialUI 生成的类名不匹配
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
const styles = {
root: {
height: '2px'
},
initialized: {
backgroundColor: 'orange'
},
connected: {
backgroundColor: 'green'
},
disconnected: {
backgroundColor: 'red'
}
};
class CableStatus extends React.PureComponent {
render() {
const { classes, status } = this.props;
return (
<div className={classes.root + ' ' + status}>
</div>
);
}
}
CableStatus.propTypes = {
classes: PropTypes.object.isRequired,
};
export default withStyles(styles)(CableStatus);
解决方案
当您想在 Material UI 中使用多个类时。有2种方式:
let statusClass = classes[status]
<div className={`${classes.root} ${statusClass}`}></div>
import clsx from 'clsx'
...
let statusClass = classes[status]
<div className={clsx(classes.root, statusClass)}></div>
推荐阅读
- google-sheets - 如何计算具有范围的 2 列
- angular - 使用 Ionic 从 firebase 获取对象数据
- javascript - 要求输入,然后在新窗口中打开
- scala - 为什么使用模式查询时所有字段都为空?
- swift - 从委托类调用视图控制器函数
- javascript - 如何在颤动中将一个图标更改为两个不同的图标?
- python - 如何在不使用 pywin 包或 excel 模板的情况下在 python 中创建类似 excel 的表?
- algorithm - 二维字母数组中的最长路径
- regex - 使用正则表达式删除匹配的字符串
- python - 如何在 Pytorch 中实现 dropout,以及在哪里应用它