You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React使用CSS Modules时如何根据状态值设置组件对应文本颜色

基于CSS Modules实现状态对应样式方案

你可以按以下步骤实现,完全适配CSS Modules的样式隔离规则,不需要额外依赖:

  • 抽离重复的状态判断逻辑为独立变量,避免多处维护判断规则
  • 建立状态值和CSS Modules类名的映射表,直接根据当前状态取对应样式类
  • 将样式类绑定到组件对应节点上

修改后的组件代码

// 提前计算当前状态
const status = verificationCompleted 
  ? "Verified" 
  : !verificationStarted 
    ? "Not Started" 
    : "In Process";

// 状态-样式映射表
const statusStyleMap = {
  "Verified": styles.verified,
  "Not Started": styles.notStarted,
  "In Process": styles.inProcess
};

<Box
  label={foo}
  description={status}
  onClick={bar}
  // 若你的Box组件用className接收自定义样式直接用这行,如果属性名是customClass/styleClass替换成对应名称即可
  className={statusStyleMap[status]}
/>

如果你的Box组件不会把className透传到description对应的文本节点,直接把description改成带样式的JSX节点即可,不需要修改Box组件源码:

<Box
  label={foo}
  description={<span className={statusStyleMap[status]}>{status}</span>}
  onClick={bar}
/>

对应CSS Modules文件(例:Component.module.css)代码

.verified {
  color: #16a34a; /* 匹配Verified状态的绿色 */
}

.notStarted {
  color: #dc2626; /* 匹配Not Started状态的红色 */
}

.inProcess {
  color: #ea580c; /* 匹配In Process状态的橙色 */
}

你可以根据实际设计稿调整色值,也可以在类里补充背景色、边框色等其他需要随状态变化的样式规则。

内容的提问来源于stack exchange,提问作者ERLay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:15:18