所有
当我在其createStore中读取Redux的源代码时:
function createStore(reducer, initialState, enhancer) {
......
var currentState = initialState;
......
dispatch({ type: ActionTypes.INIT });
......
}
创建新商店时,它将currentState设置为initialState,并在init dispatch中调用reducer以更新默认状态值。我想知道:一般来说currentStatew会从reducer中得到一个值,那那个initialState的目的是什么?
由于
答案 0 :(得分:10)
通常,只需将初始状态指定为reducer默认参数,并让每个reducer为自己管理。
然而在某些情况下,您希望使用现有数据“保湿”状态。例如,您可能已将整个状态树保存在localStorage
中并希望在启动时从那里加载它,或者您可能是rendering on the server,并且想要加载保存在服务器上的初始状态来自HTML。
在这种情况下,initialState
到createStore()
非常有用,因为它可以让您选择性地为预先填充数据的树的某些部分进行水合。在这种情况下,它将“赢”到reducer默认状态,这通常是您想要的行为。 initialState
中存在的状态树部分将按原样使用,并且将从reducer中检索缺失的部分。这使得“恢复”状态的某些部分成为可能,但总是重新初始化其他部分。
希望this answer能够对这项技术提供更深入的解释。