0入侵成本接入
0入侵成本接入
concent不需要在app顶层包裹类似Provider的组件来向整个app注入store,你只需要将你的react类注册成到concent里,就接入了状态管理,setState会将状态写入到store
核心api少且简单,功能强大
核心api少且简单,功能强大
顶层的核心api只有2个:run、register,run用于载入你的store定义,register负责将你的react组件注册为cc组件
提供全局模块化的单一数据源
提供全局模块化的单一数据源
concent的模块由state、reducer、watch、computed和init 5个部分组成,允许你按需定义,让你的ui视图与业务逻辑彻底解耦,代码组织结构同时兼顾优雅与简单
状态的连接方式多样,消费粒度灵活
状态的连接方式多样,消费粒度灵活
每一个cc类可以观察自己所属模块的指定key的状态变化,同时也可以通过定义connect观察其他任意模块的任意key的状态变化
支持多种方式提交变更状态
支持多种方式提交变更状态
除了最传统的setState,concent还允许用户调用dispatch(type:string, payload:object)以及invoke(fn:function, payload:object)去修改状态
对组件扩展了很多强大的特性
对组件扩展了很多强大的特性
模块里定义的computed和watch属于模块级别的定义,concent还允许用户在类里定义类级别的$$watch、$$computed,以满足不同场景的个性化需求,同时所有cc实例都拥有$$emit&$$on能力。
更友好的函数式组件支持
更友好的函数式组件支持
concent提供CcFragment,让你临时的插入一个视图片断来消费多个模块的数据,还提供connectDumb函数包裹你的函数组件连接store
渲染性能出众
渲染性能出众
concent基于引用收集、观察key标记和状态广播原理工作,支持任意粒度的状态变更观察,渲染效率出众
dom层级更少
dom层级更少
默认采用反向继承包裹你的组件,让你的react dom树的层级结构更少更干净
支持中间件机制
支持中间件机制
concent允许用户定义中间件拦截所有的数据变更提交记录,做额外的特殊需求处理,如时间旅行和状态回溯...
动态配置模块
动态配置模块
除了在启动的时候载入用户规划好的各个模块组装好的store,concent还允许你在启动后动态配置模块,这样方便用户将组件和其模块定义放置在同一个文件夹,打包后发布到concent组件市场,方便别人直接引入你的concent组件
模块克隆
模块克隆
concent支持对已定义模块进行克隆与复制,复制内容包括其state、computed、watch、reducer和init,这些克隆出的模块在运行时是各自完全独立的,以满足用户抽象工厂函数动态创建属于不同模块的cc类
如何安装
如何使用
生态与周边
react-router-concent让你的concent应用与react-router在一起工作,上手简单,理解容易
集中管理各个模块的loading状态、模块下reducer函数的loading状态的插件
桥接了redux-dev-tool的concent插件,让concent应用的状态变更同步到chrome的reduxDevTool插件,方便追溯状态变迁历史