Mihux 是一款 基于 react-hooks-redux 封装的react状态管理器,力求更大程度的简化数据流转,使开发者将更多的精力放在更有价值的代码逻辑实现上
package:https://www.npmjs.com/package/mihux
$ npm i mihux -Sstate - map 格式的数据实例
values - 接收任意格式的入参
getValue - 执行 state.get(name) 得到 map 则 return toJS 后的结果 ,否则 直接 return
setState - 获取最新的 map 后 return mapDatas.set 的结果;入参比照 mapDatas.set
setInState - 获取最新的 map 后 return mapDatas.setIn 的结果;入参比照 mapDatas.setIn
mergeState - 获取最新的 map 后 return mapDatas.merge 的结果; 入参比照 mapDatas.merge
mutation - 包含自定义的同步方法集和异步方法集 异步方法以 async 开头,原方法首字母大写
以上述代码为例,async toDoStr 调用时为 mutation.asyncToDoStr()
dvc/index import { Mihux, Context, useComponent } from 'mihux' import state from './dataOv' import { sync, async } from './mutation' const mihux = new Mihux() mihux.register({ state, // 绑定数据实例 sync, // 绑定同步方法 async // 绑定异步方法 }) const Provider = mihux.Provider export { Provider, Context, useComponent }Provider - 数据共享容器 Context - 数据存储上下文 useComponent - 兼容类组件(不完全兼容)
在业务代码中使用 import React, { purComponent, useContext } from 'react'; import { Provider, Context, useComponent } from '../dvc' function App(){ return ( <Provider> <ChildFunc/> <ChildClassToFunc/> </Provider> ) } const ChildFunc = (props) => { const { testData, asyncTestData, toDoSth, asyncToDoSth } = useContext(Context) return ( ... ) } // 不推荐使用 class component class ChildClass extends purComponent { render(){ const { testData, asyncTestData, toDoSth, asyncToDoSth } = useContext(Context) return ( ... ) } } const ChildClassToFunc = useComponent(ChildClass)借助 useComponent 可以在 class component 中使用所有 hooks 的 api,但抛弃了除 componentWillMount 和 componentDidMount 之外的 钩子函数
Mihux 参考依赖或参考两款已有的开源状态管理器完成开发:
基础依赖:React-hooks-redux: package: https://developer.aliyun.com/mirror/npm/package/react-hooks-redux
用法 ( 表现层 ) 借鉴:Lugiax: github: https://github.com/lugia-ysstech/lugiax
熟悉上述两款react状态管理器,将有助于了解 Mihux
Github:https://github.com/mihu-team/mihux