UI Design System
build dev

MessageList

组织连续消息流和滚动定位。中文惯用名:消息列表。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.message-list
名称MessageList
二级分类AI 与会话(ai-chat)
用途组织连续消息流和滚动定位
描述中文惯用名:消息列表。

预览

静态结构:滚动列(overflow-y-auto gap-4,高度由外层约束)逐条渲染 ChatMessage;messages 变化自动滚到底部(autoScroll 可关);onAction 统一上抛为 { id, action }。

DSL 结构

DslNode
{
  "type": "MessageList",
  "props": {
    "autoScroll": true,
    "messages": [
      {
        "id": "m1",
        "role": "user",
        "parts": [
          {
            "type": "text",
            "content": "帮我生成月报"
          }
        ]
      },
      {
        "id": "m2",
        "role": "assistant",
        "parts": [
          {
            "type": "text",
            "content": "已生成,点击下方卡片查看。"
          }
        ]
      }
    ]
  }
}

何时用

何时使用

  • 组织连续消息流和滚动定位:会话区消息容器。

何时不用

  • 单条消息:直接使用 ChatMessage。

变体

变体视觉形态适用场景
自动滚动(默认)新消息滚到底实时对话
关闭自动滚动autoScroll=false历史回放

API 属性

属性类型默认值说明
messagesMessageListItem[][]消息列表(ChatMessage props + 可选 id)
autoScrollbooleantrue消息变化自动滚到底部
onActionevent—消息操作,传出 { id, action }(${event})
className / stylestring / CSSProperties—通用:根节点 class 合并 / 内联样式(高度由外层约束)

使用规范

  • 必须给滚动高度(外层容器或 style),否则列表随内容撑高失去滚动。

正例

  • ✓ 问答面板:MessageList(h-96)+ Composer 组成最小会话闭环。

反例

  • ✕ 不约束高度直接放长消息流(页面整体滚动体验差)。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。