所有:
当我在其createStore中读取Redux的源代码时:
function createStore(reducer, initialState, enhancer) {
......
var currentState = initialState;
......
dispatch({ type: ActionTypes.INIT });
......
}
Run Code Online (Sandbox Code Playgroud)
创建新存储时,它将currentState设置为initialState,并在init dispatch中调用reducer以更新默认状态值.我想知道:一般来说,currentStatew会从reducer中获得一个值,那个initialState的目的是什么?
谢谢
Dan*_*mov 10
通常,只需将初始状态指定为reducer default argument,并让每个reducer为自己管理它.
但是在某些情况下,您希望使用现有数据"保湿"状态.例如,您可能已将整个状态树保存在a中,localStorage并希望在启动时从那里加载它,或者您可能正在服务器上进行渲染,并希望从HTML加载您在服务器上保存的初始状态.
在这种情况下,initialStateto createStore()非常有用,因为它允许您选择性地为预先填充数据的树的某些部分进行水合.在这种情况下,它将"赢"到reducer默认状态,这通常是您想要的行为.存在的状态树的部分initialState将按原样使用,并且将从reducers中检索缺失的部分.这使得"恢复"状态的某些部分成为可能,但总是重新初始化其他部分.
希望这个答案应该提供对这种技术的更深入的解释.
| 归档时间: |
|
| 查看次数: |
3810 次 |
| 最近记录: |