我写了一个极简的react状态管理库 :kisstate

github

kisstate

kisstate 是一个遵循 KISS(Keep It Simple, Stupid)原则的轻量级状态管理库,专为 React 应用设计。通过简洁的装饰器和响应式设计,帮助开发者轻松管理组件状态,告别复杂的状态逻辑。


特性 ✨

  • 极简 API:通过装饰器快速声明可观察对象、计算属性和监听器
  • React 深度集成 :通过 observer HOC 实现组件自动响应
  • 零配置:开箱即用,无需复杂配置
  • 浅比较:不做深层监听,更符合React习惯

安装 📦

bash 复制代码
npm install kisstate
# 或
yarn add kisstate

核心概念 🧠

1. Observable Class

使用 @ObservableClass 装饰器声明可观察类:

typescript 复制代码
import { ObservableClass } from 'kisstate';

@ObservableClass
class User {
  name = 'jude';
  age = 26;

  constructor() {
    this.age = 17;
  }
}

2. 属性监听

使用 @watchProps 监听特定属性变化:

typescript 复制代码
@watchProps<User>('age')
onAgeChange() {
  console.log('age changed:', this.age);
}

@watchProps<User>('name')
onNameChange() {
  console.log('name changed:', this.name);
}

3. 计算属性

使用 @computed 声明自动更新的计算属性:

typescript 复制代码
@computed<User>('age')
get nextAge() {
  return this.age + 1;
}

@computed<User>('nextAge')
get nextnextAge() {
  return this.nextAge + 1;
}

4. React 组件绑定

使用 observer HOC 连接 React 组件:

typescript 复制代码
const HocApp = observer(App);

完整示例 🚀

typescript 复制代码
import { ObservableClass, watchProps, observer, computed } from 'kisstate';

// 1. 声明可观察类
@ObservableClass
class User {
  name = 'jude';
  age = 26;

  constructor() {
    this.age = 17;
  }

  // 2. 属性变化监听
  @watchProps<User>('age')
  onAgeChange() {
    console.log('Age changed:', this.age);
  }

  // 3. 计算属性
  @computed<User>('age')
  get nextAge() {
    return this.age + 1;
  }

  @computed<User>('nextAge')
  get nextnextAge() {
    return this.nextAge + 1;
  }
}

// 4. 创建状态实例
const user = new User();

// 5. React 组件
function App() {
  return (
    <div className="card">
      <button onClick={() => user.age++}>
        Current age: {user.age}
      </button>
      <p>Next year: {user.nextAge}</p>
      <p>After next year: {user.nextnextAge}</p>
    </div>
  );
}

// 6. 绑定状态观察
export default observer(App);

工作原理 🔧

  1. 响应式系统:通过 Proxy 实现属性访问追踪
  2. 批量更新:状态变更后自动触发相关组件更新

最佳实践 ✅

  1. 单一数据源:为每个领域模型创建独立的 Observable Class
  2. 细粒度监听:按业务需求拆分监听器
  3. 计算属性缓存:自动缓存计算结果,避免重复计算
  4. 组件分层 :仅在叶子组件使用 observer 进行优化

API 文档 📖

API 说明
@ObservableClass 声明可观察类
@watchProps 监听指定属性变化
@computed 声明计算属性
observer 创建响应式 React 组件

让状态管理回归简单! 🎉

通过 kisstate,您可以专注于业务逻辑而不是状态管理框架的复杂性。欢迎贡献代码和提出建议!

相关推荐
西陵16 小时前
Nx带来极致的前端开发体验——任务编排
前端·javascript·架构
大前端helloworld16 小时前
从初中级如何迈入中高级-其实技术只是“入门卷”
前端·面试
东风西巷17 小时前
Balabolka:免费高效的文字转语音软件
前端·人工智能·学习·语音识别·软件需求
萌萌哒草头将军17 小时前
10个 ES2025 新特性速览!🚀🚀🚀
前端·javascript·vue.js
半夏陌离17 小时前
SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
java·前端·数据库
whysqwhw18 小时前
鸿蒙工程版本与设备版本不匹配
前端
gnip18 小时前
http缓存
前端·javascript
我不只是切图仔18 小时前
我只是想给网站加个注册验证码,咋就那么难!
前端·后端
该用户已不存在19 小时前
macOS是开发的终极进化版吗?
前端·后端