我想知道在减速器中是否有可能获得另一个减速器的状态。我正在使用react-redux:
import * as reducers from "./client/components/reducers";
const reducer = combineReducers({
...reducers,
routing : routerReducer,
});
const store = createStore(
reducer,
DevTools.instrument()
);
我有两个减速器:钱包和操作。 当我添加/更新操作时,我想计算我的钱包总数并将其保存在我的钱包减速器中。
这是我的钱包减速器:
import { INSERT, UPDATE, DELETE, UPDATE_ALL, SET_TOTAL } from "./wallets.constants";
import { INSERT as INSERT_OPERATION, UPDATE as UPDATE_OPERATION, DELETE as DELETE_OPERATION } from "../operations/operations.constants";
export default (state = initialState, action) => {
const result = Object.assign({}, state);
if (action.wallet && !action.wallet.uuid) {
return state;
}
switch(action.type) {
case INSERT :
case UPDATE :
case DELETE :
result[action.wallet.uuid] = action.wallet;
return result;
case INSERT_OPERATION :
case UPDATE_OPERATION :
case DELETE_OPERATION :
// Here I want to calculate total of operations in this wallet
return result;
default : return state
}
}
我想增加每个Insert的总数,而不是每次都重新计算所有总数,但是如果它是Update,则不可能,因为我需要减少我在这里没有的旧值。
感谢您的帮助
答案 0 :(得分:1)
最好尽量保持状态树尽可能正常化 - 这有助于将其视为关系数据库。如果你这样做,这意味着我认为你在这里的问题是简化的。因此(如果我理解您的要求正确),您可以在状态中保存您的添加/更新/等操作,并在运行中计算总数'而不是把它保持在状态(因为你应该能够从操作集合中得到它?)。
可用于解释存储在状态中的规范化数据的辅助函数在Redux中称为选择器。看看这里: