apps/docs/content/docs/cn/native/releases/rc-4.mdx
RC 4 引入用于嵌套可展开菜单的 SubMenu 复合组件,配套弹簧动画展开/收起;重构 Slider Output,采用基于插槽的样式并支持 textProps 透传;为 Menu.Group 增加 disallowEmptySelection,实现类单选框行为。本版本还通过双层缓冲修复快速连按时 PressableFeedback 水波纹闪烁,并修复 Bottom Sheet 在 Android 上未尊重 enablePanDownToClose 的返回键处理。
升级到最新版本:
<Tabs items={["npm", "pnpm", "yarn", "bun"]}> <Tab value="npm">
npm i heroui-native
通过预览应用在真机上体验 RC 4 的全部改进!你可以探索全新的 SubMenu 组件、改进后的 Slider Output,以及各项修复。
请确保手机已安装最新版本的 Expo Go。
方式一:扫描二维码
使用手机相机或 Expo Go 应用扫描:
<div className="flex justify-center my-6"> </div>Android 用户请注意: 若使用系统相机或其他扫码应用会跳转到浏览器并出现 404,请先打开 Expo Go,使用其内置扫码功能扫描。
方式二:点击链接
若设备已安装 Expo Go,将自动在其中打开应用。
Menu 现通过新的 SubMenu 复合组件支持嵌套可展开子菜单。SubMenu 嵌套在 Menu.Content 内,按压后以弹簧动画展开/收起额外项,并带动指示器旋转。
<NativeVideoPlayerView target="component" slug="menu" srcLight="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/docs/native/components/videos/menu-docs-light.mp4" srcDark="https://heroui-assets.nyc3.cdn.digitaloceanspaces.com/docs/native/components/videos/menu-docs-dark.mp4" />
特性:
SubMenu、SubMenu.Trigger、SubMenu.TriggerIndicator、SubMenu.Contentrole、aria-expanded、aria-disabled)pointer-events-noneFadeOut 退出动画,避免与缩放动画冲突useSubMenu 钩子供高级场景使用用法:
import { Menu, SubMenu } from "heroui-native";
export function MenuWithSubMenu() {
return (
<Menu>
<Menu.Trigger>
<Button>Open Menu</Button>
</Menu.Trigger>
<Menu.Portal>
<Menu.Overlay />
<Menu.Content>
<Menu.Item>
<Menu.ItemTitle>Edit</Menu.ItemTitle>
</Menu.Item>
<SubMenu>
<SubMenu.Trigger>
<Menu.ItemTitle>More Options</Menu.ItemTitle>
<SubMenu.TriggerIndicator />
</SubMenu.Trigger>
<SubMenu.Content>
<Menu.Item>
<Menu.ItemTitle>Import</Menu.ItemTitle>
</Menu.Item>
<Menu.Item>
<Menu.ItemTitle>Export</Menu.ItemTitle>
</Menu.Item>
</SubMenu.Content>
</SubMenu>
</Menu.Content>
</Menu.Portal>
</Menu>
);
}
完整文档与示例见 Menu 组件页。
相关 PR: #331
Slider 的 Output 已重构为基于插槽的架构,包含 container 与 text 插槽,并新增 textProps 用于向内层文本元素透传属性。
改进:
output 类拆为 container 与 text,新增 classNames(classNames={{ container, text }})以便精细覆盖样式HeroText;自定义子节点直接渲染,无额外文本包装Slider.Output 新增 textProps,可向内部文本传递任意属性(如 maxFontSizeMultiplier)OutputSlots 类型供外部使用相关 PR: #328
disallowEmptySelectionMenu 的 Menu.Group 现支持 disallowEmptySelection,在 single 选择模式下禁止取消最后一项选中,实现类单选框行为。
用法:
<Menu.Group
selectionMode="single"
selectedKeys={selected}
onSelectionChange={setSelected}
disallowEmptySelection
>
<Menu.Item id="list">
<Menu.ItemTitle>List View</Menu.ItemTitle>
<Menu.ItemIndicator />
</Menu.Item>
<Menu.Item id="grid">
<Menu.ItemTitle>Grid View</Menu.ItemTitle>
<Menu.ItemIndicator />
</Menu.Item>
</Menu.Group>
相关 PR: #331
enablePanDownToClose 一致Bottom Sheet 现会在 Android 硬件返回键行为上正确尊重 enablePanDownToClose。此前即使 enablePanDownToClose 为 false,返回键仍会关闭 Bottom Sheet。
改进:
enablePanDownToClose 透传至 BottomSheetContentContainer(默认 true)isOpen 与 enablePanDownToClose 均为 true 时注册 BackHandler 监听enablePanDownToClose={false} 时不再可通过 Android 返回键关闭相关 PR: #327
Chip 的尺寸变体已由固定高度改为基于内边距,以在较大无障碍字号下适配动态文字缩放。
迁移:
若自定义样式依赖此前的 h-5/h-6/h-7 高度,请改为新的内边距方案:
// 之前 — 固定高度
// Chip 使用 h-5(sm)、h-6(md)、h-7(lg)
// 之后 — 基于内边距
// Chip 使用 py-0.5(sm)、py-[3px](md)、py-1(lg)
// 圆角更新:rounded-xl → rounded-2xl / rounded-3xl
以下文档页面已随本版本更新:
感谢所有为本版本做出贡献的朋友!