nekocode
V2EX  ›  React

撸了个 hook 来实现组件间 state 共享

By nekocode at 2020 年 1 月 24 日 · 4030 次点击

最近刚接触 react 没多久,参考了 flutter 里的一些实现撸了个轻量级的轮子来实现组件间 state 共享:

GitHub 仓库

特点:

  • 轻量级,比 redux 简单,可以在库工程里使用
  • 体积小,不足 1kb
  • 最小范围的重新渲染。例如下图 b 和 e 共享 state,当 state 值变化时只重新渲染 b 和 e:
  a
+-+-+
| | |
b c d
    |
    e
  • 允许在 state 值指定字段发生变化时才重新渲染组件:
// 获取共享的 state,且在 age 字段发生变化时才更新被 hook 的组件
const state= useSharedState<User>(UserContext, (current, prev) => current?.age !== prev?.age);
1 条回复  •  2020-01-25 09:19:48 +08:00
vicvinc
   1
vicvinc  
   2020 年 1 月 25 日 via iPhone
m k
© 2026 V2EX · 23ms · 3.9.8.5