每个环节有多种方案,比如 Data 可以是 immutable 或者 plain object,在你选了immutable 之后,用 immutable.js 还是 seamless-immutable,以及是否用 redux-immutable 另外,不推荐用 redux-immutable 以及 redux-immutablejs,一是没啥必要,具体看他们的实现就知道了,都比较简单;更重要的是他们都改写了 combineReducer,会带来潜在的一些兼容问题
babel-plugin-import antd axios immutable react react-dom react-redux react-router react-router-dom redux redux-immutable
axios craco-less immutable react-loadable react-redux react-router-dom react-transition-group redux redux-immutable axios for-editor immutable react-loadable react-redux react-router-dom react-transition-group redux redux-immutable enhancer); export default store; reducer.js // reducer.js // 分模块Reducer import { combineReducers } from 'redux-immutable
我们使用redux-immutable模块将这个库整合进我们的程序,这样我们就能以Immutable库提供的数据类型来存储程序状态(app state)了。
return ({ number: state.getIn(['counter', 'number']) }) }, actions )(Caculator) 也可以通过引入 redux-immutable
return ({ number: state.getIn(['counter', 'number']) }) }, actions )(Caculator) 也可以通过引入 redux-immutable
几个注意点: redux中,利用combineReducers来合并多个reduce, redux自带的combineReducers只支持原生js形式的,所以需要使用redux-immutable提供的 combineReducers来代替 // 使用redux-immutable提供的combineReducers方法替换redux里的combineReducers import {combineReducers } from 'redux-immutable' import reducerOne from '.
明显体现了其效果的则是一些 DefinitelyTyped Package 的类型检查工作减少了 50% 以上的成本,如 @types/yup 以及 @types/redux-immutable 等 索引访问的类型推导
redux状态容器添加撤消/重做功能的高阶减少器 redux-search - 用于客户端搜索的Redux绑定 redux-mock-store - 用于测试redux异步动作创建器和中间件的模拟存储 redux-immutable