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

React使用map生成卡片列表时,如何单独修改单张卡片?

问题解决:条件渲染实现差异化卡片样式

核心问题分析

粉色背景残留的原因是:即使people字段不存在,Section5CardPeople这个div元素依然会被渲染,空div会继承CSS中设置的粉色背景样式。通过条件渲染可以彻底解决这个问题,同时实现价格区域的差异化显示。

具体实现步骤

1. 修复底部人数区域的条件渲染

修改Section5Card.jsx中的人数显示部分,仅当people字段存在时才渲染对应的div:

// 替换原来的Section5CardPeople代码
{props.products.people && (
  <div id='Section5CardPeople'>
    {props.products.people}
  </div>
)}

2. 实现价格区域的差异化显示

针对最后一张卡片的折扣价需求,添加条件渲染显示划掉的原价,修改价格区域代码:

// 替换原来的Section5CardPrice代码
<div id='Section5CardPriceArea'>
  {/* 有折扣价时显示划掉的原价 */}
  {props.products.discount && (
    <div id='Section5CardDiscountPrice' style={{textDecoration: 'line-through', color: '#999'}}>
      {props.products.discount}
    </div>
  )}
  <div id='Section5CardPrice'>
    {props.products.price}
  </div>
</div>

3. 完整修改后的Section5Card.jsx

import React from 'react';
import '../section5.css';

function Section5Card(props) {
  return (
    <div id='Section5Card'>
      <img src={props.products.img} id="Section5CardImg" />
      <div id='Section5CardTitle'>
        {props.products.title}
      </div>
      <div id='Section5CardName'>
        {props.products.name}
      </div>
      <div id='Section5CardComment'>
        {props.products.comment}
      </div>
      {/* 修改后的价格区域 */}
      <div id='Section5CardPriceArea'>
        {props.products.discount && (
          <div id='Section5CardDiscountPrice' style={{textDecoration: 'line-through', color: '#999'}}>
            {props.products.discount}
          </div>
        )}
        <div id='Section5CardPrice'>
          {props.products.price}
        </div>
      </div>
      {/* 修改后的人数区域 */}
      {props.products.people && (
        <div id='Section5CardPeople'>
          {props.products.people}
        </div>
      )}
      {props.products.new && (
        <div id='Section5CardNew'>
          {props.products.new}
        </div>
      )}
      {props.products.sale && (
        <div id='Section5CardSale'>
          {props.products.sale}
        </div>
      )}
    </div>
  )
}

export default Section5Card;

效果说明

  • 前4张卡片:正常显示人数区域的粉色背景和内容,价格区域仅显示现价。
  • 最后一张卡片:不渲染人数区域(无粉色背景),价格区域显示划掉的原价+现价,同时保留「새강의」「할인중」标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:25:34