全部组件
MotionHighlight
由数据生成的标签页、分段控件或导航,一个高亮会移动到选中项。
WebReact Native选择与翻页
动手试试
最简用法
Tabs.jsx<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;
它替你处理的事
- 一个高亮在各项之间移动并改变尺寸;用
highlightClassName 设置样式。 - 各项来自
items,key 来自 getKey,标签来自 renderItem。 hover 让高亮跟随指针,离开后回到选中项。- 各项可以换成多行,高亮也会跟随。
- 字体加载和布局变化会自动重新测量。
Props
| Prop | 类型 | 默认值 | 说明 |
|---|
items | readonly T[] | —必需 | 你的数据数组。 |
|---|
value | key | null | —必需 | 高亮项的 key;null 隐藏高亮。 |
|---|
onValueChange | (key, item) => void | | 某一项被按下时,携带 key 和该项运行。 |
|---|
getKey | (item) => string | number | item.id | 为一项返回唯一且稳定的 key。默认为 item.id,字符串和数字则为其本身。 |
|---|
renderItem | (item, { selected, index }) => ReactNode | item.label | 绘制一项;会收到它是否被选中。 |
|---|
hover | boolean | false | 在各项上跟随指针,离开时回到 value(Web)。 |
|---|
itemAs | element | 'button' | 每一项使用的元素。 |
|---|
itemClassName | string | | 每一项元素的 class;itemStyle 设置其内联样式。 |
|---|
highlightClassName | string | | 高亮的 class;highlightStyle 设置其内联样式。 |
|---|
transition | Transition | spring | 时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。 |
|---|
其他 props 会传给渲染的元素,所以 className、style 和事件处理函数照常可用。