新闻详情

新闻详情

首页 / 资讯中心 / 详情

React MCP App 自动高度调整:useAutoResize Hook 完整指南

发布时间:2026/9/17 3:45:58来源:尧图网络
React MCP App 自动高度调整:useAutoResize Hook 完整指南
React MCP App 自动高度调整useAutoResize Hook 完整指南【免费下载链接】ext-appsOfficial repo for spec SDK of MCP Apps protocol - standard for UIs embedded AI chatbots, served by MCP servers项目地址: https://gitcode.com/GitHub_Trending/ex/ext-appsReact MCP App 的自动高度调整是 MCP Apps 协议中最贴心的设计之一。本文带你深入解析useAutoResizeHook 的工作原理为什么useApp默认就够了、ResizeObserver如何监听页面尺寸、以及何时才需要手动调用它。读完这篇指南你将彻底搞懂嵌入 AI 聊天框的界面如何自动变高。为什么 MCP App 需要自动高度调整MCP App 是运行在宿主Host应用中的内嵌界面通常被放在一个 iframe 容器里。当你构建了一个数据面板、图表或表单类应用时内容的高度往往是动态的——比如展开更多详情、加载更多内容时界面会变得更长。如果容器高度固定用户就会看到难看的内部滚动条。理想的效果是内容变高容器跟着变高。MCP Apps 协议通过一条ui/notifications/size-changed通知实现了这一点View你的 App把最新宽高上报给 HostHost 收到后调整 iframe 尺寸。下面这张 Quickstart 示例中嵌入在宿主里的 App 界面就是自动高度调整生效后的效果——容器恰好包裹住 Tool Input 与结果区域没有多余留白useAutoResize 的工作原理Hook 的实现非常简洁核心源码在 useAutoResize.tsexport function useAutoResize(app, elementRef?) { useEffect(() { if (!app) return; return app.setupSizeChangedNotifications(); }, [app, elementRef]); }它只做一件事调用App实例的setupSizeChangedNotifications()方法。真正的重活在 app.ts 中完成机制可以概括为 4 步监听尺寸变化创建一个ResizeObserver同时观察html和body两个元素确保捕获所有尺寸变化防抖合并用requestAnimationFrame把高频的 resize 事件合并成一帧一次避免疯狂发通知精确测量临时把html高度设为max-content来测出真实内容高度宽度则取window.innerWidth源码注释解释了为什么不能对宽度也用fit-content——那会破坏响应式布局的横向滚动位置按需上报只有宽高真正变化时才调用sendSizeChanged({ width, height })发送ui/notifications/size-changed防止样式变化引发通知→布局→再通知的反馈循环。Host 侧收到通知后会在 app-bridge.ts 定义的sizechange事件回调里更新 iframe 尺寸闭环完成。99% 的情况根本不用管它这是本文最重要的结论useApp默认就开启了自动高度调整见 useApp.tsx 中的autoResize true默认值。也就是说用useApp写 App → 自动高度调整开箱即用什么都不用做手动new App(...)时不传配置 → 同样默认开启。useAutoResize官方文档明确标注了它的定位这是一个高级场景才需要的 Hook见 useAutoResize.ts 的注释。什么时候才需要手动调用 useAutoResize只有一种情况你为了自定义配置手动创建App并在构造时关闭了自动调整但之后又想要回来。官方示例在 useAutoResize.examples.tsx 中演示了这个模式const myApp new App( { name: MyApp, version: 1.0.0 }, {}, { autoResize: false }, // 先关掉 ); // ... connect 之后 ... useAutoResize(app); // 再手动加上两个实用细节记得清理Hook 在组件卸载时会自动断开ResizeObserver无需手动清理不要传 ref第二个参数elementRef实际上未被使用Hook 永远观察document.body传 ref 只会触发不必要的副作用重跑——文档建议直接省略。手动上报尺寸sendSizeChanged 逃生舱如果自动监听不满足需求例如你想在特定业务时机精确上报可以直接调用底层方法见 app.tsapp.sendSizeChanged({ width: 400, height: 600 });这是useAutoResize的手动挡版本适合配合业务逻辑在精确时刻控制容器尺寸。实测效果内容变化时界面跟着变看这张来自 Scenario Modeler 示例的截图——拖动参数滑块、切换Compare to...对比项时MRR 预测曲线和底部指标卡会实时增减整个 MCP App 容器的高度也随之平滑变化宿主侧的布局同步重排常见问题速查表问题答案用useApp后还要调useAutoResize吗不用默认已开启想让自动调整延迟开启手动创建App并设autoResize: false再用useAutoResize(app)补上想让 App 高度固定不变useApp({ ..., autoResize: false })或手动创建时关闭如何精确控制尺寸直接调用app.sendSizeChanged({ width, height })总结useAutoResize本质上是一层薄封装底层靠ResizeObserverrequestAnimationFrame防抖 变化检测三重机制保证高效与稳定绝大多数 React MCP App 通过useApp即可免费获得自动高度调整无需任何额外代码只有在手动创建 App 且关闭了默认行为的高级场景下才需要显式调用这个 Hook。想了解更多协议细节与 React 集成方式可以查阅项目内的官方文档 docs/quickstart.md 和 docs/overview.md以及 React 集成的完整示例 src/react/index.tsx。【免费下载链接】ext-appsOfficial repo for spec SDK of MCP Apps protocol - standard for UIs embedded AI chatbots, served by MCP servers项目地址: https://gitcode.com/GitHub_Trending/ex/ext-apps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

SpringBoot+Vue电商系统实战:从数据库设计到部署全解析 2026/9/17 5:34:15

SpringBoot+Vue电商系统实战:从数据库设计到部署全解析

1. 项目整体设计与思路拆解“衣依”这个项目名,在毕设和课程设计圈子里出现频率相当高。说实话,第一次看到这个标题的时候,我脑海里基本就能勾勒出它的全貌:一套典型的B2C服装电商管理系统,前端用Vue做SPA单页应用&…

阅读更多 →
HFSS cuDSS GPU加速实战:显存精准匹配与求解器调优 2026/9/17 5:34:15

HFSS cuDSS GPU加速实战:显存精准匹配与求解器调优

1. 项目概述:HFSS仿真卡在求解阶段?不是算力不够,是cuDSS-GPU没用对你有没有过这种体验:HFSS建模花了两小时,设置边界、激励、求解器参数反复核对三遍,点击“Analyze All”之后——光标变成沙漏&#xff0c…

阅读更多 →
AUTOSAR底层开发实战:Vector工具链+CAN总线+BSWM配置全链路 2026/9/17 5:34:15

AUTOSAR底层开发实战:Vector工具链+CAN总线+BSWM配置全链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI Agent时代下的身份安全模型重构与实践 2026/9/17 5:34:15

AI Agent时代下的身份安全模型重构与实践

1. Agent时代身份模型的范式转移十年前,当我第一次在银行核心系统里实现RBAC权限模型时,从未想过有朝一日需要重新思考"身份"这个基础概念。那时的世界很简单——每个操作背后都对应着一个真实的人类操作员。直到去年某金融客户的AI客服系统发…

阅读更多 →
Anaconda 与 Jupyter Notebook 环境配置实战:从安装到内核绑定与排错指南 2026/9/17 5:34:15

Anaconda 与 Jupyter Notebook 环境配置实战:从安装到内核绑定与排错指南

从本地 Python 环境被折腾到心态爆炸,到下定决心重装整个 Anaconda 生态,再到把 Jupyter Notebook 真正调教成顺手的数据分析工具,这一路我踩过的坑比很多人想象中要多得多。如果你正准备在新电脑上安装 Anaconda,或者已经被“Jup…

阅读更多 →
Android酒店预订系统开发与毕业设计实战指南 2026/9/17 5:31:14

Android酒店预订系统开发与毕业设计实战指南

1. 项目概述这个酒店预订系统App项目是一个典型的移动端毕业设计解决方案,采用Android平台开发,配套提供完整的小程序版本。作为一套"交钥匙工程"式的毕设资源包,它包含了从源码、文档到部署指南的全套材料,特别适合计算…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞