如何在 2 个联合减速器之间共享状态?
How to share state between 2 combine reducers?
我有 2 个减速器,我使用并将它们组合在一起。在第一个减速器中,我有一些东西可以获取所有初始数据(这也与第二个减速器相关)。
如何在我initialize/set从第一个reducer到第二个reducer的状态下使用数据?
function reducer1(state = initialState, action = '') {
switch (action.type) {
case constants.INITIAL_DATA:
returnstate.set('data', fromJS(document.data));
....
然后我将这两个 reducer 结合起来,我想从它们中访问“数据”(或者将数据作为 initialState 传递给第二个 reducer)。
reducer 应该 return 一个普通的对象并且没有副作用。如果你想在两种不同的 action.type
情况下使用相同的状态,那么它们要么需要在同一个函数中,要么父函数需要将状态传递给不同的 reducer 函数,就像这样:
function parentReducer(state = {}, action = '') {
switch (action.type) {
case CASE_ONE:
return childReducer1(state, action)
case CASE_TWO:
return childReducer2(state, action)
default:
return state
}
}
但这提出了一个重要的设计点:每个(顶级)reducer 代表 Redux 状态树的一个不同分支,您可能总是可以按照树的不同部分所不具备的方式设计数据存储' 需要共享。在 Redux 中(查看 DevTools),你只有一个对象,这个对象的顶级键是你的顶级 reducer 函数的名称。
基本上,如果您认为需要在 reducer 中设置不同的状态,以便其他 reducer 可以使用它,这表明需要重新考虑商店的设计。
我有 2 个减速器,我使用并将它们组合在一起。在第一个减速器中,我有一些东西可以获取所有初始数据(这也与第二个减速器相关)。
如何在我initialize/set从第一个reducer到第二个reducer的状态下使用数据?
function reducer1(state = initialState, action = '') {
switch (action.type) {
case constants.INITIAL_DATA:
returnstate.set('data', fromJS(document.data));
....
然后我将这两个 reducer 结合起来,我想从它们中访问“数据”(或者将数据作为 initialState 传递给第二个 reducer)。
reducer 应该 return 一个普通的对象并且没有副作用。如果你想在两种不同的 action.type
情况下使用相同的状态,那么它们要么需要在同一个函数中,要么父函数需要将状态传递给不同的 reducer 函数,就像这样:
function parentReducer(state = {}, action = '') {
switch (action.type) {
case CASE_ONE:
return childReducer1(state, action)
case CASE_TWO:
return childReducer2(state, action)
default:
return state
}
}
但这提出了一个重要的设计点:每个(顶级)reducer 代表 Redux 状态树的一个不同分支,您可能总是可以按照树的不同部分所不具备的方式设计数据存储' 需要共享。在 Redux 中(查看 DevTools),你只有一个对象,这个对象的顶级键是你的顶级 reducer 函数的名称。
基本上,如果您认为需要在 reducer 中设置不同的状态,以便其他 reducer 可以使用它,这表明需要重新考虑商店的设计。