前端开发
在 React/Next.js 中快速搭建聊天界面时,用…
适用于用 React/Next.js 和 shadcn/ui 快速搭建自定义聊天 UI、AI 助手或消息界面。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 React/Next.js 中快速搭特定
解决思路
- 先安装 belt CLI 技能:运行 `npx skills add belt-sh/cli`。
- 安装 chat 组件:运行 `npx shadcn@latest add https://ui.inference.sh/r/chat.json`。
- 使用 ChatContainer 包裹聊天内容:`import { ChatContainer } from "@/registry/blocks/chat/chat-container"`,然后在 JSX 中写 `<ChatContainer>{/* messages go here */}</ChatContainer>`。
- 使用 ChatMessage 渲染消息:`import { ChatMessage } from "@/registry/blocks/chat/chat-message"`,传入 `role` 和 `content`,例如 `<ChatMessage role="user" content="Hello, how can you help me?" />` 和 `<ChatMessage role="assistant" content="I can help you with many things!" />`。
- 使用 ChatInput 处理输入:`import { ChatInput } from "@/registry/blocks/chat/chat-input"`,传入 `onSubmit={(message) => handleSend(message)}`、`placeholder="Type a message..."`、`disabled={isLoading}`。
- 使用 TypingIndicator 显示正在输入:`import { TypingIndicator } from "@/registry/blocks/chat/typing-indicator"`,条件渲染 `{isTyping && <TypingIndicator />}`。
- 按完整示例组合:从 `@/registry/blocks/chat` 导入 `ChatContainer, ChatMessage, ChatInput, TypingIndicator`;用 `useState` 管理 `messages` 和 `isLoading`;`handleSend` 中先追加 `{ role: 'user', content }`,再 `setIsLoading(true)`,调用 API 后 `setIsLoading(false)`;渲染时 map `messages` 为 `ChatMessage`,加载时渲染 `TypingIndicator`,最后渲染 `ChatInput` 并传入 `onSubmit={handleSend}` 和 `disabled={isLoading}`。
- 了解消息角色变体:`user` 右对齐,`assistant` 左对齐,`system` 居中。
- 用 Tailwind CSS 和 shadcn/ui design tokens 定制样式,例如给 ChatMessage 传 `className="bg-muted"`。
- 可选安装相关技能:`npx skills add inference-sh/skills@agent-ui`(完整 agent 组件,推荐)、`npx skills add inference-sh/skills@widgets-ui`(声明式 widgets)、`npx skills add inference-sh/skills@markdown-ui`(Markdown 渲染)。
- 参考文档:Chatting with Agents、Agent UX Patterns、Real-Time Streaming,以及组件文档 `https://ui.inference.sh/blocks/chat`。
适用边界 · 注意事项
- 不适用于非 React/Next.js 项目,或没有使用 shadcn/ui + Tailwind CSS 的技术栈。
- 如果无法或不想引入 ui.inference.sh 的组件注册表/外部组件依赖,则不应使用此方案。