React 状态管理还能比这更简单吗?
我是一个喜欢简单事物的人。所以,尽管 React 的状态管理库琳琅满目,但我一直想知道,绝对“最简单”的方法是什么。
经过一段时间的构思,我想我终于想到了这个。今天,我很高兴与大家分享SimpleR State。(没错,就是大写的“R”,代表 React 😂)
想象一下,只需两个简单的步骤即可实现共享状态!
步骤 1:创建实体(共享状态)和操作(更新函数)
// counter.js
import { entity } from 'simpler-state'
export const counter = entity(0)
export const reset = () => {
counter.set(0)
}
export const increment = by => {
counter.set(value => value + by)
}
步骤 2:通过 hooks 使用组件中的实体
import { counter, increment, reset } from 'counter'
const CounterView = () => {
const count = counter.use()
return (
<>
<div>{count}</div>
<button onClick={() => increment(1)}> + </button>
<button onClick={reset}> Reset </button>
</>
)
}
(其他组件可以以相同的方式使用共享counter
。)
就这么简单!但这只是一个预告,它实际上可以做更多!
以下是该库的一些设计目标:
- 极简 API;没有复杂的概念或样板
- 使用普通函数来实现状态改变(包括异步)
- 语法灵活,基本不固执己见
- 对状态变化进行单元测试极其简单
- 具有高度可扩展性的插件(例如持久性、日志记录、开发工具)
- 完全支持TypeScript,类型简单
- 专为 React 打造,并基于React Hooks构建
- 比 context/reducer 解决方案快数倍
- 很小,只有大约 1 KB(最小化 + gzip 压缩)
如果您对这些优势感兴趣,不妨试试 SimpleR State。您可以访问simpler-state.js.org了解更多。没错,我写了完整的文档!🤓
如果您喜欢这个库,和/或它背后的简单性/概念,请在GitHub repo上给它一颗星,让我知道。😀👌
那么,告诉我,这个库还能比这更简单吗?我很乐意听听你的建议。目标是让它更接近它所宣称的“最简单”,而不是与其他库争夺“最佳”。
我在 GitHub 上开启了评论请求(此处)。非常感谢您的评论和建议。也欢迎在这里给我留言👇。
文章来源:https://dev.to/arnelenero/can-react-state-management-get-any-simpler-than-this-2o90另外补充一下——我之前提到的技术
react-entities
已经问世一段时间了,并且已经被我们公司用于生产环境。SimpleR State 是一个演进版本,它基于相同的稳定核心,但使用了完全不同(简单得多)的 API。