当前位置: 首页
前端开发
TinyRobot智能建议弹出框组件使用方法

TinyRobot智能建议弹出框组件使用方法

热心网友 时间:2026-06-15
转载

TinyRobotSuggestionPopover组件用于AI对话界面,通过弹出框集中呈现建议选项,支持点击或手动触发、分组数据、自定义列表项渲染,内置加载和空状态,并自动适配移动端,实现引导式交互与上下文帮助。

TinyRobot SuggestionPopover:智能建议弹出框组件

在 AI 驱动的对话界面中,用户真正需要的是一种更自然的交互引导方式。当 AI 助手准备提供一组可选建议时,一个恰到好处的弹出框既能承载足够的信息密度,又不会让操作变得繁琐。SuggestionPopover 正是为这种场景量身打造——点击触发器,浮层展开,建议列表清晰呈现,用户一眼即可锁定目标,一键完成选择。

TinyRobot SuggestionPopover智能建议弹出框组件

该组件的核心价值体现在以下几个方面:

  • 引导式交互:将建议项集中放置在弹出框中,界面整洁而不杂乱
  • 上下文帮助:在对话流程的适当时机提供选项,不打断对话上下文
  • 灵活的数据结构:既支持平铺列表,也支持分组列表,可根据需求自由选择
  • 丰富的自定义能力:触发器、列表项、头部、内容区……所需插槽一应俱全
  • 状态管理:内置 loading 和 empty 状态,无需额外处理
  • 移动端适配:窗口宽度小于 768px 时自动切换为移动端样式,省心省力

基本用法:带数据的弹出框

通过 data 属性传入建议数据,再用 trigger 插槽自定义触发器。点击按钮,弹出列表,操作直观便捷。


触发方式:click 与 manual

SuggestionPopover 提供两种触发方式,通过 trigger 属性配置:

  • 'click'(默认值):点击触发器时自动弹出或关闭,简单省心
  • 'manual':需要配合 show 属性(支持 v-model)手动控制显示与隐藏,适合需要精确控场的场景

说到 manual 模式,它的应用场景其实很典型——比如当 AI 回复完成后,需要按照业务逻辑自动弹出建议,这时手动控制就派上用场了。

分组建议数据

如果建议项数量较多且类别分明,分组数据格式能大幅提升浏览效率。在 data 数组中传入 SuggestionGroup 对象,用 group 字段标识分组,items 字段包含该分组下的建议项。这样展示出来,用户一目了然。


注意:分组数据和普通数据不可混用——data 数组中的项要么全是 SuggestionItem,要么全是 SuggestionGroup,二选一。

selectedGroup 支持 v-model,可以设置默认选中的分组,也能在用户切换时获取当前分组。groupShowMoreTrigger 属性控制分组“显示更多”的触发方式,支持 'click''hover',按需选用即可。

自定义列表项渲染

通过 item 插槽,每个建议项的渲染形式完全由你掌控。插槽参数为 { item },你可以在 SuggestionItem 中添加任意自定义字段,然后按自己的风格展示。


加载和空状态

SuggestionPopover 内置了 loading 和 empty 两种状态。通过 loading 属性显式开启加载状态;当 data 为空数组时,自动显示空状态。两个状态都提供了对应的插槽(loadingempty),你可以按需自定义展示效果。


Header 和 Body 插槽

除了 itemloadingempty,SuggestionPopover 还提供了 headerbody 插槽,用于完全接管弹出框的头部和内容区。下面是它的内部结构:

+---------------------------+
|     SuggestionPopover     |
|  +---------------------+  |
|  |       header        |  |
|  +---------------------+  |
|  |                     |  |
|  |        body         |  |
|  |   +-------------+   |  |
|  |   |   item[]    |   |  |
|  |   +-------------+   |  |
|  |                     |  |
|  |  loading / empty    |  |
|  +---------------------+  |
+---------------------------+
  • 使用 header 插槽时,会替换默认的标题区域
  • 使用 body 插槽时,会替换整个列表区域(包括 item 列表、loading 和 empty 状态)

移动端适配

SuggestionPopover 自带移动端适配逻辑。当视窗宽度小于 768px 时,弹出框会自动切换为移动端友好的展示样式——触控区域更大,布局更适合小屏幕。你基本无需额外处理,只需确保页面配置了正确的 viewport:

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

API 参考

Props

属性类型必填默认值说明
dataSuggestionData-建议数据
titlestring-弹出框标题
iconVNode | Component-标题图标
showboolean-控制弹出框显示/隐藏,仅在 trigger 为 'manual' 时有效
trigger'click' | 'manual''click'触发方式:点击或手动控制
selectedGroupstring-当前选中分组,支持 v-model
groupShowMoreTrigger'click' | 'hover'-分组"显示更多"的触发方式
loadingbooleanfalse是否显示加载状态
topOffsetnumber-顶部偏移量

Slots

插槽名类型说明
trigger() => VNode | VNode[]自定义触发器
item({ item }: { item: SuggestionItem }) => VNode | VNode[]自定义渲染列表项
loading() => VNode | VNode[]自定义加载状态显示
empty() => VNode | VNode[]自定义空状态显示
header() => VNode | VNode[]自定义头部区域
body() => VNode | VNode[]自定义列表区域

Events

事件名参数说明
item-clickitem: SuggestionItem点击建议项时触发
group-clickgroup: SuggestionGroup点击分组时触发
open-弹窗打开时触发
close-弹窗关闭时触发
click-outsideevent: MouseEvent点击弹窗外部区域时触发

Types

interface SuggestionItem {
  id: string
  text: string
}interface SuggestionGroup {
  group: string
  label: string
  icon?: VNode | Component
  items: SuggestionItem[]
}type SuggestionData = (SuggestionItem | SuggestionGroup)[]

OpenTiny NEXT 是一套企业级智能前端开发解决方案,以生成式 UI 和 WebMCP 两大核心技术为基础,对现有的 TinyVue 组件库、TinyEngine 低代码引擎等产品进行智能化升级,构建出面向 Agent 应用的前端 NEXT-SDKs、AI Extension、TinyRobot 智能助手、GenUI 等新产品,加速企业应用的智能化改造,实现 AI 理解用户意图并自主完成任务。

来源:https://juejin.cn/post/7649977961551577138

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
如何用拖放在Flask看板应用中更新数据库状态

如何用拖放在Flask看板应用中更新数据库状态

在Flask看板应用中,通过HTML5拖放API结合前端fetch异步POST请求,将拖拽任务的task_id和target_state发送至后端路由;后端接收JSON后更新数据库并提交事务,实现跨列拖拽时实时更新状态。需注意将事件绑定到容器而非子元素,并在ondragover中阻止默认行为以确保drop触发。

时间:2026-07-09 07:01
如何用CSS :has()选择器快速实现悬停span显示相邻div

如何用CSS :has()选择器快速实现悬停span显示相邻div

利用CSS的:has()伪类选择器,通过` bar:has(> baz:hover)+ qux`实现悬停内联元素时显示相邻块级容器,解决了传统相邻兄弟选择器无法跨层级匹配的局限,可用于悬停图标显示详情框等交互场景。需注意浏览器兼容性和性能优化,避免过度使用影响渲染效率。

时间:2026-07-09 07:01
display:block居中段落文本的响应式实现方法

display:block居中段落文本的响应式实现方法

通过`display:block`与`max-width`限制宽度,配合`margin:auto`使段落块水平居中并实现响应式布局;同时用CSS统一控制段落间距,避免脱离文档流,提升可读性与维护性。

时间:2026-07-09 07:01
JavaScript代码去重:高效避免重复编写的技巧

JavaScript代码去重:高效避免重复编写的技巧

将重复代码中的变化点提取为参数,利用ES6模板字符串动态生成选择器,可消除重复、保持一致性。注意参数安全性,必要时进行白名单校验;批量化场景可扩展为数组形式;现代框架中更推荐数据驱动或组件化封装替代手动选择器。

时间:2026-07-09 07:00
使用容器查询单位cqw实现表单输入框相对于祖父容器百分比宽度

使用容器查询单位cqw实现表单输入框相对于祖父容器百分比宽度

利用CSS容器查询单位cqw,表单输入框宽度可直接基于祖父容器计算,绕过中间包装器尺寸干扰,实现简洁响应式布局,无需硬编码或JavaScript,显著降低维护成本,提升嵌套结构下的布局灵活性。

时间:2026-07-09 07:00
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜