Redux createStore函数

时间:2016-03-10 21:52:24

标签: redux

所有

当我在其createStore中读取Redux的源代码时:

function createStore(reducer, initialState, enhancer) {
    ......
    var currentState = initialState;
    ......
    dispatch({ type: ActionTypes.INIT });
    ......
}

创建新商店时,它将currentState设置为initialState,并在init dispatch中调用reducer以更新默认状态值。我想知道:一般来说currentStatew会从reducer中得到一个值,那那个initialState的目的是什么

由于

1 个答案:

答案 0 :(得分:10)

通常,只需将初始状态指定为reducer默认参数,并让每个reducer为自己管理。

然而在某些情况下,您希望使用现有数据“保湿”状态。例如,您可能已将整个状态树保存在localStorage中并希望在启动时从那里加载它,或者您可能是rendering on the server,并且想要加载保存在服务器上的初始状态来自HTML。

在这种情况下,initialStatecreateStore()非常有用,因为它可以让您选择性地为预先填充数据的树的某些部分进行水合。在这种情况下,它将“赢”到reducer默认状态,这通常是您想要的行为。 initialState中存在的状态树部分将按原样使用,并且将从reducer中检索缺失的部分。这使得“恢复”状态的某些部分成为可能,但总是重新初始化其他部分。

希望this answer能够对这项技术提供更深入的解释。