API 参考

@kkwaenggwari/animated-chorus 的所有导出,以及它们的 props、类型和默认值。Web 和 React Native 使用相同的名称。

17 个 API

数字与文本

MotionNumber

每一位都像滚轮一样转动的数字。

Prop类型默认值说明
valuenumber | bigint | string—必需数字,或由调用方格式化好的数字文本。
mode'replace' | 'roll''replace'replace 让每个变化的位数移动一格;roll 会经过中间的数字。
direction'auto' | 'digit' | 'up' | 'down''auto'auto 跟随数值大小的变化,让进位朝同一方向滚动;digit 让每一位各自比较。
staggernumber45变化的位数之间的毫秒间隔,从个位向外。整个涟漪的时长有上限。
format(value) => string | Intl.NumberFormatOptions返回要显示的文本的函数,或 Intl.NumberFormat 选项(配合 intl)。
intlbooleanfalse使用内置的 Intl.NumberFormat。默认关闭,这样任何运行时都不必依赖 Intl。
localestring | string[]intl 使用的区域设置。
prefixstring数字前的文本。
suffixstring数字后的文本。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
onMotionComplete(value) => void各位停稳后,携带该值运行。
组件页面与工作台

MotionText

变化时带动画的文本:数字文本按位滚动,其他文本则切换。

Prop类型默认值说明
childrenReactNode要显示的文本。
aselement'span'要渲染的元素。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
onMotionComplete(text) => void动效停稳时运行。
组件页面与工作台

MotionStream

以稳定节奏显示流式文本,内容成批到达时也能追上。

Prop类型默认值说明
textstring—必需目前为止的文本。增长的文本以稳定节奏显示;被重写时从共同的开头继续。
speednumber90基础显示速度,单位为每秒字符数。
catchUpnumber900积压的内容会加速显示,在大约这么多毫秒内全部呈现。
initialbooleanfalse挂载时已有的文本也逐步显示(否则立即显示)。
effect'fade' | 'none''fade'fade 让新字符淡入;none 直接显示。
children(visible: string) => ReactNode接收按节奏输出的文本的函数,例如用于渲染 Markdown。
aselement'span'要渲染的元素。
onMotionComplete(text) => void每当显示进度追上 text 时运行。
组件页面与工作台

内容与尺寸

MotionSwap

元素改变尺寸时,内容交叉淡入淡出。

Prop类型默认值说明
valueunknown内容的标识;新的值会触发切换。纯文本子元素本身就是标识。
childrenReactNode内容。
aselement'span'要渲染的元素。
inlinebooleanas === 'span'true 按内容决定尺寸(标签、图标);false 撑满父元素宽度并为高度添加动画。
align'start' | 'center' | 'end''center'尺寸变化时内容所在的位置。
effect'fade' | 'up' | 'down' | 'scale''fade'内容如何进出:up 上升,down 下落,scale 放大。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
onMotionComplete(value) => void动效停稳时运行。
组件页面与工作台

MotionHeight

让高度随内容变化而动画过渡:折叠、展开和内容变化。

Prop类型默认值说明
openbooleantruefalse 折叠到零高度;内容保持挂载但隐藏且不可交互。
childrenReactNode内容。
aselement'div'要渲染的元素。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
onMotionComplete(open) => void高度停稳后,携带 open 运行。
组件页面与工作台

MotionPresence

在进场和离场动画期间保持内容挂载。

Prop类型默认值说明
presentboolean—必需显示或隐藏内容。用它代替卸载。
enterPose{ opacity: 1, translateY: 0 }静止时的姿态。
exitPose{ opacity: 0, translateY: -12 }内容离场以及进场时使用的姿态。
aselement'div'要渲染的元素。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
onExitComplete() => void内容离场并被移除后运行。
组件页面与工作台

选择与翻页

MotionHighlight

由数据生成的各项,以及一个移向选中项的高亮。

Prop类型默认值说明
itemsreadonly T[]—必需你的数据数组。
valuekey | null—必需高亮项的 key;null 隐藏高亮。
onValueChange(key, item) => void某一项被按下时,携带 key 和该项运行。
getKey(item) => string | numberitem.id为一项返回唯一且稳定的 key。默认为 item.id,字符串和数字则为其本身。
renderItem(item, { selected, index }) => ReactNodeitem.label绘制一项;会收到它是否被选中。
hoverbooleanfalse在各项上跟随指针,离开时回到 value(Web)。
itemAselement'button'每一项使用的元素。
itemClassNamestring每一项元素的 class;itemStyle 设置其内联样式。
highlightClassNamestring高亮的 class;highlightStyle 设置其内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

MotionPager

由数据生成、可滑动的页面。

Prop类型默认值说明
itemsreadonly T[]—必需你的数据数组。
indexnumber显示的页面。省略时由翻页器自行管理。
defaultIndexnumber0index 不受控时的起始页。
onIndexChange(index, item) => void滑动、按键或滚轮手势停稳后,立即携带索引和该项运行。
getKey(item) => string | numberitem.id为一项返回唯一且稳定的 key。默认为 item.id,字符串和数字则为其本身。
renderItem(item, { index, active }) => ReactNodeitem.label绘制一页;会收到它的索引以及是否为当前页。
gapnumber0页面之间的间距,单位为像素。
itemClassNamestring每一项元素的 class;itemStyle 设置其内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

列表

MotionList

由数据生成、带 key、只为变化项添加动画的列表。

Prop类型默认值说明
itemsreadonly T[]—必需你的数据数组。
getKey(item) => string | numberitem.id为一项返回唯一且稳定的 key。默认为 item.id,字符串和数字则为其本身。
renderItem(item, index) => ReactNodeitem.label绘制一项。
aselement'div'要渲染的元素。
itemAselement'li' | 'div'每一项使用的元素。
itemClassNamestring每一项元素的 class;itemStyle 设置其内联样式。
effect'rise' | 'fade' | 'scale' | 'slide''rise'各项如何进出。
distancenumber16rise 和 slide 的移动距离,单位为像素。
staggernumber40进场各项之间的毫秒间隔。
order'forward' | 'reverse''forward'错开的方向。
presentbooleantruefalse 在保留布局的同时让所有项退场;true 让它们回来。
initialbooleantrue列表挂载时播放进场动画。
playKeystring | number改变它会重新播放进场动画。
transitionTransitionspring进出场项的过渡。
layoutTransitionTransitionspring滑向新位置的项的过渡。
组件页面与工作台

MotionReorder

拖动以对列表或网格重新排序,支持键盘移动。

Prop类型默认值说明
itemsreadonly T[]由你控制顺序时的各项。
defaultItemsreadonly T[][]由组件保存顺序时的初始各项。
onItemsChange(items, { reason, key }) => void携带新顺序以及变化来源(拖动、放下或键盘)运行。
getKey(item) => string | numberitem为一项返回唯一的 key。默认为该项本身。
renderItem(item, { index, dragging }) => ReactNodeitem.label绘制一项;会收到它的索引以及是否正在被拖动。
reorder'live' | 'drop''live'live 在拖动时移动其他项;drop 等到放下时再移动。
layout'list' | 'grid''grid'list 或 grid。
columnsnumber3网格的列数。
gapnumber12各项之间的间距,单位为像素。
disabledbooleanfalse关闭拖动。
durationnumber260其他项让开时的毫秒时长。
itemClassNamestring每一项元素的 class;itemStyle 设置其内联样式。
组件页面与工作台

手势

MotionSwipe

横向滑动显示操作按钮、并可被滑走的行。

Prop类型默认值说明
childrenReactNode行的内容。
startActionsReactNode把行向结束方向拖动时,在行内开始一侧显示。
endActionsReactNode把行向开始方向拖动时,在行内结束一侧显示。
dismiss'start' | 'end' | 'both'长距离滑动或快速甩出会移除该行的方向。
onDismiss(side) => void行滑出并收起后运行;请在这里把该项从数据中移除。
onOpenChange(side | null) => void携带展开的一侧运行,行收起时为 null。
disabledbooleanfalse关闭滑动。
contentClassNamestring行内容的 class;contentStyle 设置其内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

MotionHold

长按以确认;提前松手会回退。

Prop类型默认值说明
childrenReactNode按钮的标签。
onConfirm() => void长按完成后运行一次。
durationnumber1200需要按住的毫秒数。
disabledbooleanfalse禁用按钮。
fillClassNamestring逐渐增长的填充的 class;fillStyle 设置其内联样式。
组件页面与工作台

浮层

MotionSheet

带档位的底部面板、顶部面板或侧边抽屉。

Prop类型默认值说明
openbooleanfalse面板是否显示。
onOpenChange(open) => void面板被拖动、点击或按 Escape 关闭时,携带 false 运行。
detents(number | 'content')[]['content']停靠尺寸:屏幕比例、像素或 'content'。
detentnumber受控的档位索引。
defaultDetentnumber0未指定 detent 打开时使用的档位索引。
onDetentChange(index) => void携带面板停稳时所在档位的索引运行。
side'bottom' | 'top' | 'start' | 'end''bottom'面板出现的边缘。
modalbooleantrue添加背景遮罩,把焦点限制在内部,并让页面不可交互。
dismissiblebooleantrue拖过最小档位、点击背景遮罩或按 Escape 都能关闭它。
backdropClassNamestring背景遮罩的 class;backdropStyle 设置其内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

MotionZoom

从原位放大到填满屏幕的图片。

Prop类型默认值说明
srcstring原位显示的图片。
zoomSrcstring加载完成后显示的大图;请保持相同的宽高比。
marginnumber24放大后图片周围保留的空间,单位为像素。
disabledbooleanfalse关闭缩放。
onZoomChange(zoomed) => void放大时携带 true、关闭时携带 false 运行。
backdropStyleCSSProperties背景遮罩的内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

进度

ProgressBar

支持不确定状态的受控进度条。

Prop类型默认值说明
valuenumber | null从 0 到 max 的进度;null 表示不确定。
maxnumber100表示完成的值。
colorstring'currentColor'填充颜色。
trackColorstring'#e7ece9'轨道颜色。
thicknessnumber8线条粗细,单位为像素。
direction'ltr' | 'rtl''ltr'从左(ltr)或从右(rtl)开始填充。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

ProgressRing

支持不确定状态的受控进度环。

Prop类型默认值说明
valuenumber | null从 0 到 max 的进度;null 表示不确定。
maxnumber100表示完成的值。
sizenumber96直径,单位为像素。
thicknessnumber8圆环粗细,单位为像素。
colorstring'currentColor'弧线颜色。
trackColorstring'#e7ece9'轨道颜色。
childrenReactNode显示在中间的标签。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。
组件页面与工作台

过渡

motionTokens

可用于任意 transition prop 的现成值。

Prop类型默认值说明
duration{ instant, fast, normal, slow }0 · 140 · 280 · 520时长,单位为毫秒。
easing{ ease, easeOut, expoOut, backOut }Transition带时长和具名曲线的时间过渡。
spring{ quick, basic, gentle, bouncy }Transition弹簧过渡,从快速紧实到柔和弹跳。
过渡
App.jsx
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';

export function Score({ points, players }) {
  return (
    <>
      <MotionNumber value={points} />
      <MotionList items={players} renderItem={(player) => player.name} />
    </>
  );
}

搜索

输入关键词搜索文档。