grid 布局react组件可以循数据自定义渲染某个数据 ,或插入某些数据在某个索引下

devtools/2025/1/26 5:56:07/
import React from "react";
import "./App.css"; // 引入CSS文件interface GridDisplayProps {items: any[];rowNum?: number;renderItem?: (item: any, index: number) => React.ReactNode;customElement?: React.ReactNode;customIndex?: number;
}const GridDisplay: React.FC<GridDisplayProps> = ({items,rowNum = 2,renderItem,customElement,customIndex = 0,
}) => {// 默认的渲染方式const defaultRenderItem = (item: any, index: number) =><div>{`这是默认渲染${index}`}</div>;// 插入自定义元素const modifiedItems = [...items];if (customElement) {const targetIndex = customIndex < items.length ? customIndex : 0;modifiedItems.splice(targetIndex, 0, customElement);}// 将数组分成每行指定数量元素的子数组const rows: any[] = modifiedItems.reduce((resultArray: any[], item, index) => {const chunkIndex = Math.floor(index / rowNum);if (!resultArray[chunkIndex]) {resultArray[chunkIndex] = [];}resultArray[chunkIndex].push(item);return resultArray;}, []);return (<div className="container">{rows.map((row, rowIndex) => (<div className="row" key={rowIndex}>{row.map((item: any, index: number) => {const globalIndex = rowIndex * rowNum + index;return (<divclassName="item"key={index}style={{ width: `${100 / rowNum}%` }}>{React.isValidElement(item)? item: renderItem? renderItem(item, globalIndex): defaultRenderItem(item, globalIndex)}</div>);})}</div>))}</div>);
};export default GridDisplay;
.container {display: flex;flex-direction: column;
}.row {display: flex;
}.item {flex: 1;width: 50%;
}

效果图


http://www.ppmy.cn/devtools/153300.html

相关文章

Coze,Dify,FastGPT,对比

在当今 AI 技术迅速发展的背景下&#xff0c;AI Agent 智能体成为了关键领域&#xff0c;Coze、Dify 和 FastGPT 作为其中的佼佼者&#xff0c;各有千秋。 平台介绍 - FastGPT&#xff1a;由环界云计算公司发起&#xff0c;是基于大语言模型&#xff08;LLM&#xff09;的开源…

基于web的音乐播放网站的设计与实现 毕业设计-附源码09626

目 录 摘要 1 绪论 1.1 研究背景 1.2系统开发目标、意义 1.3研究内容 2 相关技术介绍 2.1 MySQL数据库 2.2 Java编程语言 2.3 SpringBoot框架介绍 3 系统需求分析与设计 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 法律可行性分析 3.2 需…

笔试-字符串1

应用 第1个字符串&#xff1a;R 第2个字符串&#xff1a;BR 第3个字符串&#xff1a;RBBR 第4个字符串&#xff1a;BRRBRBBR 规律&#xff1a;第i个字符串 第i-1个字符串取反 第i-1个字符串&#xff0c;其中B、R互为相反字符。求第n个字符串的第k个字符为多少&#xff1f;n从…

TCP 详解

TCP 解析 考虑最简单的情况&#xff1a;两台主机之间的通信。这个时候只需要一条网线把两者连起来&#xff0c;规定好彼此的硬件接口&#xff0c;如都用USB、电压10v、频率2.4GHz等&#xff0c;这一层就是物理层&#xff0c;这些规定就是物理层协议 。 我们当然不满足于只有两…

ubuntu黑屏问题解决

重启Ubuntu后&#xff0c;系统自动进入tty1&#xff0c;无法进入桌面。想到前几天安装了一些主题之类的&#xff0c;然后今天才重启&#xff0c;可能是这些主题造成冲突或者问题了把。 这里直接重新安装ubuntu-desktop解决&#xff1a; 更新源&#xff1a; sudo apt-get upd…

代码编写java代做matlab程序代编Python接单c++代写web系统设计

1. Java代码编写 Java是一种广泛使用的编程语言&#xff0c;特别适用于企业级应用开发、Android应用开发以及大型系统的开发。 服务内容&#xff1a;根据客户需求&#xff0c;编写高质量的Java代码&#xff0c;实现特定的功能或业务逻辑。建议&#xff1a;确保对Java语言及其…

鸿蒙Harmony json转对象(1)

案例1 运行代码如下 上图的运行结果如下: 附加1 Json_msg interface 案例2 import {JSON } from kit.ArkTS; export interface commonRes {status: numberreturnJSON: ESObject;time: string } export interface returnRes {uid: stringuserType: number; }Entry Component …

MacOS安装Docker battery-historian

文章目录 需求安装battery-historian实测配置国内源相关文章 需求 分析Android电池耗电情况、唤醒、doze状态等都要用battery-historian&#xff0c; 在 MacOS 上安装 battery-historian&#xff0c;可以使用 Docker 进行安装runcare/battery-historian:latest。装完不需要做任…