Redux createStore函数中使用的initialState是什么

Kua*_*uan 4 redux

所有:

当我在其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中检索缺失的部分.这使得"恢复"状态的某些部分成为可能,但总是重新初始化其他部分.

希望这个答案应该提供对这种技术的更深入的解释.