tailwindcss 无法动态绑定类名

tailwindcss 无法动态绑定类名

在使用tailwindcss来动态绑定绑定类名时遇到了无法实现的情况,开始真是让人百思不得其解

想实现一个根据字段自动匹配颜色的标签

心想这不是很简单,switch来匹配识别tag字段并返回颜色,在tailwindcss的bg-[颜色值]自定义背景,拿捏!

它本身是我设定的一个react组件,代码如下

javascript 复制代码
const Tags = ({ tags }) => {
  const selectColor = (tag) => {
    let color = "";
    switch (tag) {
      case "tailwindcss":
        color = "#62BAF2";
        break;
      case "css":
        color = "#3a65f0";
        break;
      case "node":
        color = "#78a265";
        break;
      case "nodemon":
        color = "#8cce5e";
        break;
      case "react":
        color = "#387ca0";
        break;
      case "vue":
        color = "#62b082";
        break;
      case "axios":
        color = "#5f22d6";
        break;
      default:
        color = "#ea3323";
    }
    return color;
  };
  return (
    <span>
      {tags.map((tag, index) => (
        <span
          key={index}
          className={`inline-block text-white p-0.5 m-1.5 ml-0 rounded-md bg-{selectColor(tag)}`}
        >
          {tag}
        </span>
      ))}
    </span>
  );
};
export default Tags;

要讨论的主要是bg-{selectColor(tag)}

接下来就让我不淡定了,代码好好的,怎么我的标签就不显示颜色呢?

马上打开控制台看看是不是动态匹配值没设置上去

可以看到,对于bg字符串已经拼接好了,这就奇怪了,再去搜搜它的背景样式字段:background-color, 并没有这个字段,说明tailwindcss并没有把bg-[颜色值]解析并渲染上去,于是我开始在互联网上遨游...,寻求答案

two thousand years later...

原来这样解决

最后在官方文档找到了答案,还得是多看看官方文档,相关链接:不要动态构造域名

简单总结一下,tailwindcss类名只接受 作为完整不间断字符串存在的类 , 意思是我需要将那一句代码改为:${bg-[selectColor(tag)]}

js 复制代码
<span
    key={index}
    className={`inline-block text-white p-0.5 m-1.5 ml-0 rounded-md ${bg-[selectColor(tag)]}`}
        >
     {tag}
</span>

另外我还有一种解决方案就是使用内联样式:

js 复制代码
style={{ background: selectColor(tag) }}

感悟

学习一个新的东西总会踩很多坑,之前从来没有记录过,踩过的坑还会重复踩,并且还会花费很多时间去重新搜索解决,小到一个类似的问题,大到一个项目架构和其它解决方案,还是要多学会总结与复盘啊,上面的情况就是我在搭建个人的博客中遇到的一个问题,趁着边搭建,边输出一些问题想法和解决措施,还能为博客搭建好后,没有文章可发的尴尬处境,建立一些基础。

相关推荐
康小汪7 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南7 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
白山编程大哥9 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Flynt10 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
Csvn10 小时前
bundle优化
前端
北冥有鱼11 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚11 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601811 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能11 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师11 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端