快速上手

https://github.com/stkevintan/ServiceX

ServiceX是一个Typescript Project Only的基于React hooks api之上的轻量级状态管理工具,主要的特点和解决的痛点有:

  1. 灵活多store:可以自由粒度的定义store,避免了redux在大项目中单一store越来越庞大的问题,并且提供一套强大的依赖注入功能来管理store

  2. 严格ts类型:项目本身有严格ts编写,同时对外接口处处都有TS类型推断,再也不用担心redux中action type拼错或者payload类型不兼容等隐形bug,同时更容易进行代码定位。

  3. 强大的rxjs集成:所有副作用都是通过rxjs进行描述和管理,与redux-saga相比,rxjs更通用,更强大,ts类型提示和约束做的更好。

安装

npm i service-x immer inversify reflect-metadata rxjs

使用

开启ts中的编译flag:

编辑tsconfig.json中的complerOptions:

{
  "compilerOptions": {
    "strict": true, // 严格模式,建议开启
    "emitDecoratorMetadata": true, // 开启metadata支持
    "experimentalDecorators": true,  // 开启decorator支持
    //...
  }
}

experimentalDecorators虽然是实验性质的,但是这个flag已经稳定好几个版本了,大名鼎鼎的Angular也使用到了这个特性,所以不必担心之后的兼容问题。

第一个Service

service代表了一个store,其中定义了store的state以及与redux概念相似的reducer, effect等action:

与React结合

一个简单的人名搜索应用就OK啦,这里有一个更加高级的在线示例:

https://codesandbox.io/s/service-x-demo-9dqw6

Last updated

Was this helpful?