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

Next.js中如何基于item.id实现列表项交替颜色渲染

解决列表项交替背景色失效的问题

可能的原因及对应方案:

  • 条件逻辑搞反
    如果你的event.id是从1开始的,第一项的id为奇数,会触发else分支使用bg-gray50,和你想要的「第一项白、第二项灰」逻辑相反。只需交换条件中的类名即可:

    <div className={`cursor-pointer w-full my-1 ${event.id % 2 === 0 ? 'bg-gray50' : 'bg-white'}`}>
    

    或者直接判断奇数来匹配第一项:

    <div className={`cursor-pointer w-full my-1 ${event.id % 2 === 1 ? 'bg-white' : 'bg-gray50'}`}>
    
  • id不连续导致判断混乱
    如果event.id不是连续整数(比如存在跳号、非数字id),用id判断奇偶会失效。这种情况建议改用列表渲染时的index索引来判断,索引是连续递增的,能保证严格的交替效果:

    {events.map((event, index) => (
      <div 
        className={`cursor-pointer w-full my-1 ${index % 2 === 0 ? 'bg-white' : 'bg-gray50'}`}
        key={event.id}
      >
        {/* 列表项内容 */}
      </div>
    ))}
    
  • CSS类名优先级或存在性问题
    检查bg-white和bg-gray50这两个类是否存在于你的样式文件中,或者是否被其他更高优先级的样式(比如行内样式、更具体的CSS选择器)覆盖。可以通过浏览器开发者工具查看元素的Computed样式,确认背景色的实际生效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:15:27