修复 React 列表 key 重复导致的 DOM 报错
在开发 AI Agent 对话界面时遇到此问题,记录根因与解法。
TL;DR
Date.now() 毫秒级时间戳可能在同一毫秒内重复,作为 React 列表 key 会导致 DOM 报错。解决方案是添加随机后缀,或使用 crypto.randomUUID()。
在开发 AI Agent 对话界面时遇到此问题,记录根因与解法。
Date.now() 毫秒级时间戳可能在同一毫秒内重复,作为 React 列表 key 会导致 DOM 报错。解决方案是添加随机后缀,或使用 crypto.randomUUID()。
在构建 AI Agent 平台时遇到此问题,记录根因与解法。
在 Zustand store 中添加 lastFetchTime 字段和 TTL 常量,请求前检查缓存是否过期。10 行代码实现简单有效的数据缓存,避免多页面重复请求同一数据。
Docusaurus 文档页标题中的 SVG 图标与文字对齐,推荐使用 display: flex + align-items: center + gap,配合 .theme-doc-markdown 选择器精准隔离 docs 页面,不影响 blog。
在为客户构建 AI 客服自动化系统时遇到此问题,记录根因与解法。
FastAPI 的 StreamingResponse 在客户端断开连接时会取消生成器任务,导致 asyncio.CancelledError。正确做法是在生成器中捕获该异常并 re-raise,否则会导致异常日志污染和资源泄漏。
React SPA 集成 GA4 的关键点:1) 禁用 send_page_view: false 避免重复追踪;2) 用 useLocation 监听路由变化手动发送 pageview;3) 登录后设置 user_id 实现跨设备追踪。
Docusaurus 引入 Tailwind 后,Preflight 的 CSS Reset 会重置 <ul> 元素的 list-style、margin、padding,导致面包屑导航样式丢失。解决方法是在 custom.css 中添加显式覆盖样式。
在构建多服务协作的 SaaS 系统时遇到此问题,记录根因与解法。
httpx.AsyncClient 不要用 async with client.post() 模式,应该先创建 client 再调用方法:response = await client.post()。
Pydantic v2 不再支持 class Config,需要用 model_config = ConfigDict(from_attributes=True)。如果你的模型有 model_config 字段,必须重命名避免与保留字冲突。
Vite 路径别名需要同时配置 vite.config.ts 和 tsconfig.json,缺一不可:Vite 负责打包时解析,TypeScript 负责类型检查和 IDE 提示。
VSCode Copilot Agent Mode 是实验性功能,能让 AI 自动执行多步骤任务(包括编辑文件、运行终端命令)。在 settings.json 中添加 "github.copilot.chat.agent.enabled": true 即可启用,适合处理重复性重构、批量文件修改等场景。