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

React中map渲染卡片时每渲染3次后添加不同自定义文本如何实现

实现方案

核心思路是通过map的索引参数判断卡片位置,满足条件时插入自定义内容:

基础实现(仅在第3张Chris卡片后插入固定文本)

直接判断当前卡片索引为2(索引从0开始,第3张对应索引2)时,插入自定义内容即可,修改后代码如下:

import React from 'react';
import data from '../data.json';
import { Card,Button } from 'react-bootstrap';

function Med() {
    return (
        <div>
                {data.slice(0,6).map((item, index)=>{
                    return (
                        // React列表渲染需要加唯一key,这里假设item.Name唯一,可根据实际数据替换为id等字段
                        <React.Fragment key={item.Name}>
                            <div>
                                <Card style={{ width: '18rem' }}>
                                    <Card.Body>
                                        <Card.Title>{item.Name}</Card.Title>
                                        <Card.Text>
                                            This is the explaination of product card.
                                        </Card.Text>
                                        <Button variant="primary">Add to cart</Button>
                                    </Card.Body>
                                </Card>                           
                            </div>
                            {/* 第3张卡片渲染完成后插入自定义文本 */}
                            {index === 2 && <div className="custom-text">你要插入的自定义文本</div>}
                        </React.Fragment>
                    )
                })}       
        </div>
    )
}

export default Med;

进阶实现(每3张卡片后插入动态切换的文本)

如果需要每3张都插入不同的可动态更新的文本,维护一个文本数组按插入顺序取值即可:

import React, { useState } from 'react';
import data from '../data.json';
import { Card,Button } from 'react-bootstrap';

function Med() {
    // 动态插入的文本数组,可根据需求修改、更新
    const [insertTexts, setInsertTexts] = useState([
        '第1次插入的自定义文本(3张后)',
        '第2次插入的自定义文本(6张后)'
    ]);

    return (
        <div>
                {data.slice(0,6).map((item, index)=>{
                    // 计算当前是第几次插入,从0开始计数
                    const insertIndex = Math.floor((index + 1) / 3) - 1;
                    return (
                        <React.Fragment key={item.Name}>
                            <div>
                                <Card style={{ width: '18rem' }}>
                                    <Card.Body>
                                        <Card.Title>{item.Name}</Card.Title>
                                        <Card.Text>
                                            This is the explaination of product card.
                                        </Card.Text>
                                        <Button variant="primary">Add to cart</Button>
                                    </Card.Body>
                                </Card>                           
                            </div>
                            {/* 每3张卡片后插入对应文本 */}
                            {(index + 1) % 3 === 0 && insertTexts[insertIndex] && (
                                <div className="custom-text">{insertTexts[insertIndex]}</div>
                            )}
                        </React.Fragment>
                    )
                })}       
        </div>
    )
}

export default Med;

需要修改插入的文本时,直接调用setInsertTexts更新数组内容即可实现动态切换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:57:05