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

React:使用Tailwind CSS、Streamdown与Ant Design X

之前是把样式都交给AI写了,但是发现AI喜欢每个组件对应一个样式,这样子不方便后续维护,既然都交给AI了那么还不如直接让AI用Tailwind CSS。经过实测发现AI写Tailwind CSS的水平还是很强的。

静态页面交给AI写用Tailwind CSS用的已经很好了。

使用Ant Desgin X

@ant-design/x 是一个专注于 React 生态的先进 AI 组件库,旨在简化与人工智能集成的开发过程。

该库包括高度定制化的 AI 组件,允许开发者轻松地将对话 AI 集成到他们的应用中。除了丰富的 UI 组件,@ant-design/x 还提供了一揽子 API 解决方案,支持开发者通过令牌认证直接接入现有 AI 服务,无缝衔接与 AI 的对话和交互。无论是建立智能聊天应用、提升用户交互体验还是加快 AI 能力的集成,@ant-design/x 都是 React 开发者进入 AI 世界的理想伙伴。

官方仓库地址:https://github.com/ant-design/x

官方文档地址:https://x.ant.design/components/overview-cn

这个组件比较新直接让AI来写是不太行的,需要自己看下文档,不过文档已经提供了比较详细的示例代码了,自己看懂之后,复制粘贴一下交给AI,当做AI的上下文,写起来估计问题也不大。

目前使用Ant Desgin X做了一个简单的AI聊天界面了,自己用AI写的组件的质量跟大厂写的肯定是不能比的,既然大厂都做的这么好了,直接用大厂做好的轮子就行了。

AI对Ant Design这个组件库很熟练,使用这个组件库的Menu + React Router代替了之前写的自定义样式 + React Router。

使用Ant Design做了一个模型配置页面:

个人感觉让AI用知名组件库来写比纯让AI自己写还是好多了。

使用Streamdown

这个也是一个新东西直接让AI来写是不太行的,需要自己先看下仓库介绍。

Streamdown的简介是“react-markdown 的即插即用替代品,专为 AI 驱动的流式传输而设计。”

官方仓库地址:https://github.com/vercel/streamdown

用起来在流式传输方面确实比之前使用的react-markdown效果要好一点。

渲染代码效果:

渲染表格效果:

渲染mermaid图效果:

遇到的问题

被一个SSE传输导致前端总是没有换行的一个问题困扰最久。

之前的效果是这样的:

总是只有一行,我能发现应该是后端传过来的换行符没有被正常解析导致的,但是叫AI改了很久还是没有很好地解决,自己上网查了一下,果然发现有很多人都遇到过这个问题。

一个很不错的解决方案就是进行转义,因为SSE传输有他自己的格式:

前端在处理的时候一般喜欢将所有\n都去掉,就导致了AI回复就只有一段话。

可以在后端将AI回复中的\n转义为一个占位符,这里用的是<|newline|>,然后在前端再将这个占位符转化为\n即可。

后端处理:

前端处理:

这样AI回复就不会就只有一段内容了,AI回复中带有的换行能正常保留了。

一些学到的知识点

解构写法

这种写法:

const Sidebar: React.FC<SidebarProps> = ({ collapsed = false }) => {}

类型安全:TypeScript 确保组件接收正确的 props 类型

简洁性:解构和默认值在一行完成

可读性:直接看到组件需要哪些 props

自文档化:类型定义作为组件的"文档"

React.useEffect的使用

useEffect 是 React 中最重要的钩子之一,它让你能够在函数组件中执行副作用操作。

副作用(Side Effects):指组件渲染之外的操作,如:

数据获取(API调用)

订阅(定时器、事件监听)

手动修改DOM

localStorage操作

React.useMemo的使用

useMemo 是 React 提供的性能优化钩子,用于记忆化计算结果,避免在每次渲染时重复执行昂贵的计算。

localStorage的使用

localStorage 是 Web 浏览器提供的一种客户端存储机制,允许网站在用户浏览器中持久化存储数据。

基本概念

localStorage 是 Window 对象的属性,提供了键值对存储功能,数据没有过期时间,除非用户手动清除或通过代码删除。

http://www.cnnetsun.cn/news/49044.html

相关文章:

  • 字节跳动开源Bamboo-mixer:AI驱动电解液研发革命,周期缩短60%
  • 后端学习笔记
  • Gitea权限管理:构建安全高效的代码访问控制体系
  • AI视频生成终极指南:从零开始快速上手WAN2.2-14B-Rapid-AllInOne
  • Ascend C 编译器内幕与自动调优实战:从手写 Kernel 到 AI 驱动的性能优化
  • Ascend C 绿色计算与边缘部署:面向低碳 AI 的极致能效优化实践
  • Step-Audio 2系列深度实战指南:多模态音频理解的技术突破与应用全景
  • 量子计算终极指南:如何用Qiskit快速掌握量子编程的完整教程
  • React-chartjs-2 实战深度突破:从数据混沌到可视化洞察的架构思维
  • 22、LTSP 环境搭建与 Ubuntu 服务器安全指南
  • 23、Linux系统安全管理:sudo、AppArmor与SSH的深度解析
  • 智能中文对话系统完整构建指南:从零到一的5个关键步骤
  • Java泛型实战:类型安全与高效开发
  • 无需函数,教你快速分离Excel单元格中的文本和数字
  • 学术探索新航标:书匠策AI解锁毕业论文写作的“隐形导航仪”
  • 告别论文“缝合怪”:解锁书匠策AI,把信息碎片织成你的知识图谱
  • 学术迷航中的智能灯塔:书匠策AI如何重构毕业论文写作生态
  • 别再死磕论文了!你的毕业论文需要一个“科研副驾”
  • 当你的学术世界支离破碎,我借AI之手为它重绘版图
  • 论文焦虑终结者?揭秘「书匠策AI」如何用算法重构你的学术写作体验
  • 职场进阶:如何全面提升面试表现力?
  • 律师咨询|基于springboot + vue律师咨询系统(源码+数据库+文档)
  • Agent 通过Langchain实现网页检索功能
  • 终极指南:5分钟快速搭建个人作品集网站的完整解决方案
  • CogVideo革命性突破:2D视频秒变立体3D的智能转换技术
  • DeepLabCut实战进阶:从姿态估计到强化学习环境的深度配置指南
  • 终极游戏DLC解锁指南:三步免费解锁付费内容
  • SeedVR2 2.5.10全面评测:8GB显存也能玩转的AI视觉增强神器
  • PCSX2模拟器性能优化终极指南:从卡顿到流畅的完整解决方案
  • 告别卡顿:DBeaver性能优化终极指南