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

React中如何通过条件渲染实现表格行的显示与隐藏?

React表格行条件渲染失效的修复方案

你的代码里有个关键错误:把比较运算符写成了赋值运算符,这直接导致表格行的条件逻辑完全混乱。

问题根源

你写的vehicle.type = "car"是赋值操作,不是判断相等。这行代码会把vehicle.type强制改成"car",而且因为赋值表达式的返回值是"car"(非空字符串在JS里被视为true),所以不管原本车辆类型是什么,这行对应的表格行都会被渲染,同时还会篡改你的vehicle数据,后续逻辑自然全错了。之前在label/input组里看似正常,大概率是组件重新渲染时状态被重置掩盖了问题,但表格里的逻辑因为数据被篡改,就暴露了bug。

修复后的代码

把所有的=替换成严格相等比较的===即可,另外包裹<tr>的<Fragment>完全可以去掉(单个元素不需要Fragment包裹):

return (
  <>
    <h2>Vehicle Details: {vehicle.vehicleId}</h2>

    <table>
      <tbody>
        {vehicle.type === "car" && (
          <tr>
            <th>Car</th>
            <td>{vehicle.reg}</td>
          </tr>
        )}

        {vehicle.type === "truck" && (
          <tr>
            <th>Truck</th>
            <td>{vehicle.reg}</td>
          </tr>
        )}

        <tr>
          <th>Bus</th>
          <td>{vehicle.reg}</td>
        </tr>
      </tbody>
    </table>
  </>
);

可选优化(更简洁的写法)

如果后续车辆类型增多,建议用对象映射来管理,避免重复的条件判断:

const vehicleRows = {
  car: <tr><th>Car</th><td>{vehicle.reg}</td></tr>,
  truck: <tr><th>Truck</th><td>{vehicle.reg}</td></tr>
};

return (
  <>
    <h2>Vehicle Details: {vehicle.vehicleId}</h2>
    <table>
      <tbody>
        {vehicleRows[vehicle.type]}
        <tr>
          <th>Bus</th>
          <td>{vehicle.reg}</td>
        </tr>
      </tbody>
    </table>
  </>
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:31:22