javascript - 我可以在 React Jss 中使用破坏设置动态类名吗
问题描述
我正在使用类似的东西,<span className={`${status_icon} ${classes[`${status}`]}`} />
但我想析构该对象并使用它。有什么办法吗?
目前我有
const classes = useStyles();
const { status_icon } = classes;
我想像这样使用它
const {status_icon, learning_in_progress, not_started} = useStyles();
源代码 - CodeSandBox
import React from "react";
import { createUseStyles } from "react-jss";
export default function App() {
return (
<>
<h3>
<LearnGridStatus status="not_started" />
Not Started
</h3>
<h3>
<LearnGridStatus status="learning_in_progress" />
In Progress
</h3>
</>
);
}
function LearnGridStatus({ status }) {
const styles = {
status_icon: {
display: "inline-block",
marginRight: "8px",
width: "15px",
height: "15px",
verticalAlign: "middle",
borderRadius: "50%"
},
not_started: {
background: "#6a7887"
},
learning_in_progress: {
background: "#3dc3ff"
}
};
const useStyles = createUseStyles(styles);
const classes = useStyles();
const { status_icon } = classes;
return (
<span className={`${status_icon} ${classes[`${status}`]}`} />
);
}
解决方案
是的,您可以使用计算属性名称:
const styles = {
status_icon: {
display: "inline-block",
marginRight: "8px",
width: "15px",
height: "15px",
verticalAlign: "middle",
borderRadius: "50%"
},
not_started: {
background: "#6a7883"
},
learning_in_progress: {
background: "#3dc3ff"
}
};
const useStyles = createUseStyles(styles);
function LearnGridStatus({ status }) {
const { status_icon, [status]: currentStatus } = useStyles();
return <span className={`${status_icon} ${currentStatus}`} />;
}
工作示例:
推荐阅读
- google-cloud-platform - Cloud Run on GKE 自动扩缩
- git - 将主仓库从 Bitbucket 迁移到 Github。如何将克隆的 repo 重新连接到新的 Github repo?
- winforms - SignalR 客户端在第二个会话的 start() 上挂起
- python - TF 2.0 顺序 CNN 到 LSTM 中用于回归“负维度大小”错误
- android - 您有一个尚未推出的生产版本
- node.js - 在 docker-compose build 上安装 node.js 时出错
- java - Docker multistage COPY:没有这样的文件或目录
- jquery - 使用 CSS 或 JQuery 更改 Div 的形状
- amazon-web-services - Ansible AWS 动态清单实例过滤器不起作用
- bitcoin - 有没有使用 WebAssembly 挖掘比特币的开源解决方案?