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

React中动态数据在Tailwind CSS不生效,复选框样式控制问题求解

解决Tailwind CSS动态类不生效的问题

你的代码存在几个关键问题导致功能失效:

  • 状态类型不匹配:checkValue初始值是空字符串,但checkbox的checked是布尔值,最终会导致className里混入"true"/"false"这类无效类名。
  • Tailwind不支持true:line-through这种自定义条件语法,这种写法不会被框架解析。

直接修改以下两处即可解决:

  1. 修正状态初始值,统一用布尔类型作为状态默认值:
const [checkValue, setCheckValue] = useState(false);
  1. 根据checkValue的布尔值动态添加line-through类,替换原来的错误写法:
<label 
className={`inline-block pl-[0.15rem] hover:cursor-pointer ${checkValue ? 'line-through' : ''}`}>
  {item}
</label>

完整修改后的代码:

import { useState } from "react";
export default function ShopList({ item, index }) {
  const [checkValue, setCheckValue] = useState(false);
  return (
    <div>
      <div className="mb-[0.125rem] block min-h-[1.5rem] pl-[1.5rem]" data-index={index}>
        <input type="checkbox" onChange={(e) => setCheckValue(e.target.checked)} />
        <label 
        className={`inline-block pl-[0.15rem] hover:cursor-pointer ${checkValue ? 'line-through' : ''}`}>
          {item}
        </label>
      </div>
    </div>
  );
}

逻辑很清晰:当checkbox被勾选时,checkValue变为true,模板字符串会自动把line-through类添加到label上,Tailwind就能正确识别并应用删除线样式;未勾选时则不添加该类。

内容的提问来源于stack exchange,提问作者Enes Şirin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:03:14