哐呱哩 · 开源

做得小,响得亮。

面向 React 和 React Native 的开源状态管理与动效工具。三个专注的包,从第一次 import 起就能用,需要多少再扩展多少。

  • 3 个包
  • React · React Native
  • 自带 TypeScript 类型声明
  • ISC 许可证

敲一下铜锣,每个工具都会用自己的方式回应这声响。

01 · 工具

三件乐器,一个节拍。

每个工具都把一件事做到底。可以单独用,也可以组合用——它们本来就是为彼此契合而设计的。

restate

状态管理React + React Native

一个 Hook 就能共享,何时保存由你决定。

无需 Provider、action 或 reducer,组件就能读取同一个值。只有选取的部分变化时才会重新渲染,保存和恢复只在你指定的时刻发生。

  • 无需 Provider 即可共享
  • 只订阅你选取的部分
  • 显式保存到 IndexedDB 或 MMKV
安装
npm install @kkwaenggwari/restate

实时

两个组件,一个 store

点击任意一侧的按钮。两个面板读取同一个 restate() 值并一起变化;运费徽标只监听一个选取结果。

页头

2 件在购物车中

商品列表

2 件在购物车中

Animated

动效引擎React DOM

一个值,指挥整个屏幕。

在 React DOM 上使用你在 React Native Animated 中熟悉的 timing、spring 和 interpolate。一个值驱动众多元素的样式,且不会每帧触发 React 渲染。

  • 你熟悉的 React Native Animated API
  • 被打断时保留位置和速度
  • 所有者消失时自动清理
安装
npm install @kkwaenggwari/animated

实时

一个 Value,十二个形状

滑块只改变一个 Value,十二个形状的位置、旋转、大小和圆角全部由它推导。按一下弹簧,再在动画进行中抓住滑块试试。

Animated Chorus

成品组件React · React Native

难做的交互,已经替你做好。

滚动的数字、会移动的高亮、只有变化项才会动的列表、底部面板和滑动操作。只需传入数据,无需 Provider 或初始化调用,React 和 React Native 都能用。

  • 数字、标签页、列表和面板
  • Web 和原生使用同一个 import
  • 新输入会从屏幕上的当前状态继续
安装
npm install @kkwaenggwari/animated-chorus @kkwaenggwari/animated

实时

只需要数据的仪表盘

选择一个时间段:MotionHighlight 移动过去,MotionNumber 滚动,ProgressRing 填满,MotionList 只移动发生变化的行。

今天本周本月

访问量

1,284

  1. 首页
  2. 价格
  3. 文档
  4. 博客

示例数据

02 · 合奏

敲一下,全都动起来。

这个舞台是用 Animated 构建的。一个保存滚动进度的 Value,同时指挥 48 个形状的位置、旋转、缩放和透明度。

  1. 01
    回响

    散落的点汇聚成铜锣的圆环。

  2. 02
    分开

    圆环一分为三,各自染上每个工具的颜色。

  3. 03
    成形

    它们变成状态的连线、动效的轨迹和合唱的立柱。

  4. 04
    合拍

    一切排列整齐,落在同一个节拍上。

progress1.00

03 · 原则

小,贯彻到底。

从一个 import 开始

一开始不需要包裹的 Provider 或全局配置。应用需要什么功能时再加什么。

只更新需要的部分

只有选取结果变化的组件、使用某个值的元素,以及发生移动的行会被更新。

负责到底

被打断的动效会从屏幕上的当前状态继续;所有者消失时,订阅和动画都会被释放。

类型完备,文档齐全

每个包都自带 TypeScript 类型声明,文档提供 39 种语言。

04 · 名字的由来

哐呱哩,开启合奏的那面小锣。

哐呱哩(Kkwaenggwari)取自韩国传统打击乐器“꽹과리”的发音,“哐”正是铜锣敲响的声音。在韩国传统农乐(풍물)中,领头敲꽹과리的乐手为整个合奏定下节拍。我们的工具也想做到这样:小而清晰,让整个应用踩在同一个节拍上。

kkwaenggwari哐呱哩(Kkwaenggwari)这个名字来自韩国传统打击乐器“꽹과리”的发音。它是一面用槌敲击的小铜锣,声音明亮清脆——我们也想做出这样小而有存在感的开源工具。