工具提示
Jetpack Compose 工具提示组件,用于在长按时显示上下文信息。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
Expo UI Tooltip 与官方 Jetpack Compose Tooltip API 保持一致。TooltipBox 会包裹锚点内容并显示工具提示。工具提示内容通过 TooltipBox.PlainTooltip 或 TooltipBox.RichTooltip 这两个复合组件提供,它们分别对应 PlainTooltip 和 RichTooltip。工具提示可以通过长按触发,也可以通过 ref 以编程方式显示。
安装
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
用法
纯文本工具提示
长按锚点内容以显示工具提示。
import { Host, TooltipBox, Button, Text } from '@expo/ui/jetpack-compose'; export default function PlainTooltipExample() { return ( <Host matchContents> <TooltipBox> <TooltipBox.PlainTooltip> <Text>添加到收藏夹</Text> </TooltipBox.PlainTooltip> <Button onClick={() => {}}> <Text>收藏</Text> </Button> </TooltipBox> </Host> ); }
带标题和正文的富文本工具提示
使用 TooltipBox.RichTooltip 搭配 Title 和 Text 复合组件模式,以提供更详细的上下文信息。
import { Host, TooltipBox, Button, Text } from '@expo/ui/jetpack-compose'; export default function RichTooltipExample() { return ( <Host matchContents> <TooltipBox> <TooltipBox.RichTooltip> <TooltipBox.RichTooltip.Title> <Text>相机</Text> </TooltipBox.RichTooltip.Title> <TooltipBox.RichTooltip.Text> <Text>使用设备相机拍摄照片和录制视频。</Text> </TooltipBox.RichTooltip.Text> </TooltipBox.RichTooltip> <Button onClick={() => {}}> <Text>打开相机</Text> </Button> </TooltipBox> </Host> ); }
带操作的富文本工具提示
使用 TooltipBox.RichTooltip.Action 添加一个可交互操作。使用 isPersistent 让工具提示保持可见,以便用户点击它。存在操作插槽时,hasAction 会自动推导生成。
import { Host, TooltipBox, Button, TextButton, Text } from '@expo/ui/jetpack-compose'; export default function RichTooltipActionExample() { return ( <Host matchContents> <TooltipBox isPersistent> <TooltipBox.RichTooltip> <TooltipBox.RichTooltip.Title> <Text>需要权限</Text> </TooltipBox.RichTooltip.Title> <TooltipBox.RichTooltip.Text> <Text>此功能需要访问相机和麦克风。</Text> </TooltipBox.RichTooltip.Text> <TooltipBox.RichTooltip.Action> <TextButton onClick={() => {}}> <Text>了解更多</Text> </TextButton> </TooltipBox.RichTooltip.Action> </TooltipBox.RichTooltip> <Button onClick={() => {}}> <Text>录制视频</Text> </Button> </TooltipBox> </Host> ); }
编程方式显示和关闭
使用 ref 可以以命令式方式调用 show() 或 dismiss() 来显示或关闭工具提示,而无需长按。
import { useRef } from 'react'; import { Host, TooltipBox, type TooltipBoxRef, Button, Text, Row } from '@expo/ui/jetpack-compose'; export default function ProgrammaticTooltipExample() { const tooltipRef = useRef<TooltipBoxRef>(null); return ( <Host matchContents> <TooltipBox ref={tooltipRef} isPersistent> <TooltipBox.PlainTooltip> <Text>通过编程方式显示!</Text> </TooltipBox.PlainTooltip> <Button onClick={() => {}}> <Text>锚点</Text> </Button> </TooltipBox> <Row horizontalArrangement={{ spacedBy: 8 }}> <Button onClick={() => tooltipRef.current?.show()}> <Text>显示</Text> </Button> <Button onClick={() => tooltipRef.current?.dismiss()}> <Text>关闭</Text> </Button> </Row> </Host> ); }
API
import { TooltipBox } from '@expo/ui/jetpack-compose';
Component
Type: React.Element<TooltipBoxProps>
A container that wraps anchor content and shows a tooltip on long-press.
Provide the tooltip content via TooltipBox.PlainTooltip or TooltipBox.RichTooltip.
All other children are the anchor/trigger.
Use ref to imperatively show() or dismiss() the tooltip.
React.ReactNodeChildren containing a TooltipBox.PlainTooltip or TooltipBox.RichTooltip slot and the anchor/trigger content.
The anchor content triggers the tooltip on long-press.
boolean • Default: trueWhether user input (long-press, hover) triggers the tooltip.
booleanWhether the tooltip contains an action. Affects accessibility and dismiss behavior.
When not specified, this is automatically derived from the presence of a RichTooltip.Action slot.
boolean • Default: falseWhether the tooltip persists instead of auto-dismissing after a short timeout.