当前位置: 首页 > news >正文

聊天中的聊天记录展示框

1.实现滚动到顶部时可以丝滑的获取数据并且获取到数据渲染到页面后可以恢复滚动的位置

2.实现了消息按时间段分片渲染(具体的时间段分割按自己需求来修改CommentTime函数)

3.如果要给时间分割组件做多语言请结合dayjs来做对应的多语言(修改formatMessageTime函数)

4.真是开发时将获取数据接口换成真实接口,并根据实际数据判断是已经没有更多数据了,以及将组件和函数中的的字段替换成实际接口返回的字段

5.渲染样式根据自己需求来改

6.需要安装的包

npm install react-virtuoso npm install dayjs npm install antd --save //组件库根据自己的需求来安装,也可以安装别的

一、operate.ts(定义的方法)

import { Message } from "."; import dayjs from "dayjs"; // 模拟获取聊天记录(许要替换成调真实接口获取,以及替换函数中的字段) export const generateFakeMessages = ( startId: number, count: number, ): Message[] => { return Array.from({ length: count }, (_, i) => { const id = startId - count + i; const isMe = id % 2 === 0; const date = new Date(Date.now() + i * 1000 * 60); const formattedTime = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")} ${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`; return { id, text: `这是一条模拟的消息内容,ID为 ${id}。${isMe ? "这是我发送的。" : "这是对方发送的。"}`, sender: isMe ? "me" : "other", timestamp: formattedTime, }; }); }; // 消息分片 export const CommentTime = (messages: any[]) => { let groupedMessages: any[] = []; let currentGroup: any[] = [messages[0]]; for (let i = 0; i < messages.length; i++) { if (messages[i + 1]) { if (
http://www.jsqmd.com/news/716691/

相关文章:

  • 开源大模型实操手册:像素幻梦·创意工坊多用户协作部署架构设计
  • 【C++/Qt】Qt 封装 TCP 客户端底层 Network 类:连接、收发、自动测试与错误处理
  • 复杂工业全流程过程监测与故障诊断【附代码】
  • 2026年张掖美食本地人推荐
  • Arm Performance Advisor:Android图形性能优化实战指南
  • VS Code Copilot Next 工作流配置不是“开箱即用”,而是“开箱即崩”?揭露GitHub Copilot Teams v2.12.0+中3个高危默认配置项及紧急热修复补丁
  • AArch64内存管理架构与TLB机制详解
  • MySQL升级前如何评估性能影响_生产环境模拟压测与对比方案
  • 多租户实现方案
  • 强力3个方法:浏览器内GPU加速法线贴图生成的完整指南
  • 生成式AI时代网络管理员的NCCL调优实战指南
  • 分钟搞懂深度学习AI:实操篇:卷积层
  • **TiDB 在高并发场景下的性能优化实战:从慢查询到极致吞吐的跃迁之路**在当前分布式数据库广泛应用的
  • VS Code MCP插件接入实战:3小时完成从零到生产级部署的完整链路拆解
  • [特殊字符] GitHub README 改造接第一单:一个比“AI副业”更具体的小服务
  • SFI立晶ESD/TVS管原厂原装一级代理商分销经销
  • **基于Python的智慧医疗影像分析系统设计与实现:从数据预处理到模型部署全流程实战**在智慧医疗快速发展
  • Java金融事务必须绕开的6个Spring @Transactional陷阱,监管检查高频扣分点逐条标注
  • WCH CH583M-R0开发板与RISC-V微控制器解析
  • 小米开源MiMo-V2.5和Pro模型:高效、低成本,赋能商业级AI应用!
  • **WebSocket实战进阶:从基础通信到实时推送的全流程架构设计与代码实现**在现代Web应用中,**实
  • smolOS:ESP8266上的微型Linux命令行环境解析
  • 边缘设备垃圾检测:NAS优化与TinyML实践
  • 正向+反向+主从解析
  • STC12单片机唯一ID读取实战:三种方法对比与固件版本避坑指南
  • 骑友的修养从第一课开始。骑行,别指指点点,别当让人烦的老师。
  • B站缓存视频转换终极指南:3步实现m4s到MP4的快速无损转换
  • DS4Windows:Windows平台游戏手柄兼容性终极解决方案
  • YOLO26创新改进 | BMVC 2024 | 独家特征融合Neck改进篇 | MASAG多尺度自适应空间注意力门控融合,选择性地突出空间相关特征,助力小目标检测、医学图像分割任务有效涨点
  • 低延迟混合滤波算法原理与优化实践