输入区(MessageInput)

输入区:MessageInput 是 IDL 定义的跨端 UI 组件,props / events / behaviors 在各平台语义一致。本页给出契约属性、事件、渲染行为、数据源与 HarmonyOS 端绑定/示例。

契约预留

本平台尚未实现:以下绑定声明来自已冻结契约,示例标注为契约样例。

契约属性(props)​

属性类型必填说明
draftstring是草稿文本
disabledbool是是否禁用输入
mutedbool是是否被禁言(禁言时禁用发送并提示)
mentionCandidatesUserProfile[]否@ 候选成员列表
maxLengthint否最大输入长度(默认 5000)

事件​

事件参数说明
sendtext,extras?输入区发送文本
typingbool输入状态变化(true / false)
pickImage—选择图片
pickFile—选择文件
startRecord—宿主回调(参数见 IDL 事件定义)
pickLocation—选择位置
draftChangeddraft草稿变化

渲染行为​

  • 输入时 500ms 防抖触发 typing(true),3s 无输入触发 typing(false)
  • 被禁言(muted=true)禁用发送并提示;仍可查看
  • 草稿自动保存(IMLib.saveTextMessageDraft),发送成功后清空
  • 群聊支持 @ 选择器(全员/指定成员),生成 mentionedInfo

数据源​

未在 IDL 声明 dataSource;由宿主从 IMLib 拉取(getConversationList / getHistoryMessages / MESSAGES / CONVERSATION 事件)。

依赖边界

组件不直连网络与数据库:会话/消息由宿主从 IMLib 拉取后传入,组件只做排序、角标、格式化与渲染。

平台绑定​

项值
公开符号 / 签名struct MessageInput(@Component):props draft/disabled/muted/mentionCandidates/maxLength;回调 onSend(text,extras?)/onTyping(bool)/onPickImage()/onPickFile()/onStartRecord()/onPickLocation()/onDraftChanged(draft);行为=500ms 防抖 typing(true)、3s 无输入 …
导出列表包含是
UI 框架ArkUI 声明式组件(@Component struct),预留命名路由

使用示例​

ArkTS(契约预留)
// HarmonyOS 绑定为契约预留,以下为声明(bindings.harmony.imkit.methodMap)
// struct MessageInput(@Component):props draft/disabled/muted/mentionCandidates/maxLength;回调 onSend(text,extras?)/onTyping(bool)/onPickImage()/onPickFile()/onStartRecord()/onPickLocation()/onDraftChanged(draft);行为=500ms 防抖 typing(true)、3s 无输入 typing(false)、草稿自动保存

const kit = new IMKitFacade();
kit.mount(container); // 组件:MessageInput
kit.update({ locale: 'zh-CN' });

相关文档​