logoWebkit RSC
@pt/react-common组件使用

ChatSender

强大的聊天消息发送组件,支持富文本、占位符输入框、及各种工具栏插槽。

ChatSender 是一个功能完备的对话输入组件。它支持自适应高度输入,并提供了丰富的插槽用于添加附件上传、模型选择等按钮。

核心特性

  • 高度自适应:输入框高度随内容自动撑开。
  • 插槽系统:提供 beforeleftToolsrightTools 等多个位置的 ReactNode 插槽。
  • 状态联动:内置“发送”与“停止生成”状态切换逻辑。
  • 键盘支持:支持 Enter 发送,Shift + Enter 换行。

基本用法

import { ChatSender } from "@pt/react-common/components";

const [value, setValue] = useState("");
const [isGenerating, setIsGenerating] = useState(false);

const handleSubmit = (content) => {
setIsGenerating(true);
// 模拟 AI 回复...
};

<ChatSender
value={value}
onChange={setValue}
isGenerating={isGenerating}
onSubmit={handleSubmit}
onStop={() => setIsGenerating(false)}
placeholder="请输入消息..."
/>

状态展示:生成中

正在思考或生成回复时的状态

<ChatSender isGenerating={true} />

自定义工具栏

利用 leftTools 插入自定义按钮

<ChatSender 
leftTools={
  <button className="text-xs px-2 py-1 bg-fd-muted rounded border">
    切换模型
  </button>
} 
/>

属性说明 (Props)

属性类型默认值说明
valuestring-输入值(受控)
onChange(val: string) => void-值变化回调
isGeneratingbooleanfalse是否显示“停止生成”按钮
placeholderstring-输入框占位符
onSubmit(content: string) => void-提交消息触发(Enter 或点击发送)
onStop() => void-点击停止按钮的回调
leftToolsReactNode-底部区域左侧工具栏插槽
rightToolsReactNode-发送按钮左侧工具栏插槽
classNamestring-自定义类名

互动演练场

试试直接编辑下方代码,预览区会实时更新:

加载编辑器中…

On this page