跳到主要内容

Reaction 点赞Reaction · burst

表达“喜欢”的开关按钮,也是 Oink 的品牌微交互:点亮时猪鼻子弹一下、迸出一圈粒子,数字滚动加一。一条内容上放一个就够了。

基本用法

不传 count 时只有图标;count 是别人点的数量(不含自己),显示的数字 = count + 自己是否点了。

受控

pressed / onChange 受控。label 是按钮给读屏的名字,默认“Oink 一下”,请换成具体的动作。

128 人赞过

自定义

icon 换成别的 24×24 图标;children 放可见的文字;noBurst 关掉粒子;disabled 禁用。

单独使用粒子

burst(x, y) 在视口坐标处放一圈粒子,可以用在别的“完成了”的时刻。开了减弱动效时什么都不做。

规格

粒子
12 颗 · 直径 4–10 · 飞出约 46px 后下落 14px 消失 · 620–880ms
粒子颜色
强调色、浅强调色、正文色轮流
数字
旧值滚出、新值 spring 滚入

接口

Reaction

属性类型默认值说明
pressed / defaultPressedbooleanfalse是否点亮,受控 / 非受控。
onChange(pressed: boolean) => void—切换时。
countnumber—别人点的数量(不含自己)。不传就不显示数字。
labelstring'Oink 一下'按钮的名字(给读屏)。
iconReactNode—自定义图标(24×24),默认猪鼻子。
noBurstboolean—点亮时不放粒子。
...restButtonHTMLAttributes—其余原生按钮属性(disabled 等)透传。

burst(x, y, options?)

属性类型默认值说明
x, y*number—视口坐标(clientX / clientY 那一套)。
options.countnumber12粒子数量。
options.distancenumber46飞出的大致距离(px)。
options.colorsstring[]—粒子颜色,轮流使用。默认取主题色。
options.sourceElement—从哪个元素上读主题色,默认根元素。

无障碍

  • 原生按钮加 aria-pressed:读屏读作“赞这篇文章,切换按钮,已按下 / 未按下”。Tab 聚焦,Enter 或空格切换。
  • 名字来自 label(视觉上隐藏),后面跟着可见的文字和数字;请把 label 写成具体动作。
  • 粒子是纯装饰:带 aria-hidden、不接收指针事件,减弱动效时不出现。
  • 点亮与否除了颜色变化,aria-pressed 是给读屏的第二种提示;数字变化也同步可见。