rc-redux-model 提供了一种较为舒适的数据状态管理书写方式,让你简洁优雅地去开发;内部自动生成 action, 只需记住一个 action,可以修改任意的 state 值,方便简洁,释放你的 ⌨️ CV 键~
rc-redux-model 参考了 dva 的数据流方案,在一个 model 文件中写所有的 action
、reducer
、state
,解读了 redux-thunk
的源码,内部实现了一个中间价,同时提供默认行为 action,调用此 action 可以直接修改任意值的 state,例如 :
只需要定义一个 model
export default { namespace: 'reduxModel', state: { testA: '', testB: [], }, }
那么 rc-redux-model
会自动帮你注册 action 及 reducers,等价于 :
export default { namespace: 'reduxModel', state: { testA: '', testB: [], }, action: { settestA: ({ commit, currentAction }) => { commit({ type: 'SET_REDUXMODEL_TESTA', payload: currentAction.payload, }) }, settestB: ({ commit, currentAction }) => { commit({ type: 'SET_REDUXMODEL_TESTB', payload: currentAction.payload, }) }, // 推荐使用此action进行修改reducers值 setStore: ({ dispatch, currentAction }) => { dispatch({ type: `reduxModel/change${currentAction.payload.key}`, payload: currentAction.payload.values, }) }, }, reducers: { ['SET_REDUXMODEL_TESTA'](state, payload) { return { ...state, ...payload, } }, ['SET_REDUXMODEL_TESTB'](state, payload) { return { ...state, ...payload, } }, }, }
那么你只需要在组件中,调用的默认 Action 即可
class MyComponent extends React.Component { componentDidMount() { this.props.dispatch({ type: 'reduxModel/setStore', payload: { key: 'testA', values: '666', }, }) } }
✨ 特性
- 轻巧简洁,写数据管理就跟写
dva
一样舒服 - 异步请求由用户自行处理,内部支持 call 方法,可调用提供的方法进行转发,该方法返回的是一个 Promise
- 参考
redux-thunk
,内部实现独立的中间件,所有的 action 都是异步 action - 提供默认行为 action,调用此 action ,可以修改任意的 state 值,解决你重复性写 action 、reducers 问题
- 内置
seamless-immutable
,只需开启配置,让你的数据不可变 - 默认检测不规范的赋值与类型错误,让你的数据更加健壮
评论