easy-model 的 5 个关键能力:一次“模型化”心智迁移

0 阅读1分钟

我以前对状态管理的理解,是“给数据建一个容器”。后来发现问题不是容器少,而是业务逻辑被拆碎了:状态、逻辑、依赖各自为战,结果变成了“可运行但难维护”。

easy-model 的价值,在于把状态管理变成“业务建模”。模型是核心,状态附着在模型上,依赖靠注入,变化靠监听。下面是我理解的 5 个关键能力:

  1. 类模型驱动:字段即状态,方法即业务逻辑,摆脱 action/reducer 的碎片化。
  2. 实例按参数缓存:provide 让相同参数返回同一实例,天然支持按业务 key 分区。
  3. 深度变化监听:不仅能监听字段,还能追踪嵌套对象、引用实例、派生 getter 的变化。
  4. Hooks 友好:useModel / useInstance / useWatcher 不改变 React 的使用习惯。
  5. IoC + DI 内建:依赖关系显式,测试和重构成本更低。

跨组件共享实例的写法如下,这个模式在大型页面非常常见:

import { provide, useModel, useInstance } from "easy-model";

class CommunicateModel {
  constructor(public name: string) {}
  value = 0;
  random() {
    this.value = Math.random();
  }
}

const CommunicateProvider = provide(CommunicateModel);

function CommunicateA() {
  const { value, random } = useModel(CommunicateModel, ["channel"]);
  return (
    <div>
      <span>组件 A:{value}</span>
      <button onClick={random}>改变数值</button>
    </div>
  );
}

function CommunicateB() {
  const { value } = useModel(CommunicateModel, ["channel"]);
  return <div>组件 B:{value}</div>;
}

如果你已经感受到“状态容器式”的心智负担,那么 easy-model 值得认真评估。它不是换一个库,而是换一种思路:让业务模型成为状态的第一公民

GitHub: easy-model

npm: @e7w/easy-model