初始化 State
来源:互联网 发布:asynchttp post json 编辑:程序博客网 时间:2024/05/01 11:27
初始化State的方法有以下方法:
1.在创建store 的时候,createStore()方法的第二个参数preloadeState参数是初始化state的。
2.在reducer中设置state的初始值state={...},也可以使用ES6中默认的参数语法: function myReducer(state = someDefaultValue,action)如下代码:
如果不使用 combineReducers()
或者类似的代码,那么 preloadedState
总是会优先于在 reducer 里面使用 state = ...
,因为 state
传到 reducer 里的是 preloadedState
的 state 而不是 undefined
,所以 ES6 的默认参数语法并不起作用。
如果使用 combineReducers()
方法,那么这里的行为就会有一些细微的差别了。那些指定了 preloadedState
的 reducer 会接收到那些对应的 state。而其他的 reducer 将会接收到 undefined
并因此回到了 state = ...
这里去获取指定的默认值。
通常情况下,通过 preloadedState
指定的 state 要优先于通过 reducer 指定 state。这样可以使通过 reducer 默认参数指定初始数据显得更加的合理,并且当你从一些持久化的存储器或服务器更新 store 的时候,允许你更新已存在的数据(全部或者部分)。
总结
综上所述,如果你遵守 Redux 的约定并且要让 reducer 中 undefined
的 state
参数返回初始 state (最简单的实现方法就是利用 ES6 的默认参数来指定 state),那么对于组合多个 reducers 的情况,这将是一个很有用的做法,他们会优先选择通过 preloadedState
参数传到 createStore()
的对象中的相应值,但是如果你不传任何东西,或者没设置相应的字段,那么 reducer 就会选择指定的默认 state
参数来取代。这样的方法效果很好,因为他既能用来初始化也可以用来更新现有的数据,不过如果数据没有保护措施的话,这样做也会使一些独立的 reducer 的 state 被重新赋值。当然你可以递归地使用这个模式,比如你可以在多个层级上使用 combineReducers()
方法,或者甚至手动的组合这些 reducer 并且传入对应部分的 state tree。
- 初始化 State
- React Native 初始化state 状态机
- CCRenderBuffer初始化中的render state参数
- State
- state
- State
- state
- State
- state
- STATE
- State
- state
- state
- state
- state
- Python源码学习九,dfa state的初始化
- 初始化state方法和定义组件props验证等
- react+redux项目如何对state进行初始化
- 508. Most Frequent Subtree Sum
- MFC学习(02) 矩形移动 (VC++6.0版本)
- Mac上超强的网络请求调试工具whistle,堪比Fiddler!
- Jenkins的使用
- 个人笔记:linux基本操作-进阶操作
- 初始化 State
- Android.mk添加大量.cpp 免除麻烦,只需添加
- [时间管理]TED-如何掌控你的时间
- Nginx配置基础-rewrite
- MJRefresh—快速集成下拉上拉刷新
- 15 个必须知道的 Chrome 开发工具技巧
- 浅用HTML编辑器ueditor
- Qt Creator快捷键
- 不同场景下 MySQL 的迁移方案