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