2016-11-20 37 views
0

我想知道是否有可能在減速機中獲得另一個reducer的狀態。我正在使用react-redux:獲取其他reducer的狀態與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 
    } 
} 

我之後要增加我總對每個插入的不是重新計算所有的總每一次,但如果它是一個更新是不可能的,因爲我需要遞減老我在這裏沒有的價值。

謝謝你幫

回答

0

這是最好的嘗試,並保持你的狀態樹歸地 - 它有助於去想它幾乎是一個關係型數據庫。如果你這樣做,這意味着我認爲你在這裏的問題被簡化了。所以(如果我理解你的需求是正確的),你可以在你的狀態下保存你的add/update/etc操作並計算總量,而不是保持它的狀態(因爲你應該能夠從操作?)。

可用於解釋存儲在狀態中的歸一化數據的輔助函數在Redux中被稱爲選擇器。看看這裏:

http://redux.js.org/docs/recipes/ComputingDerivedData.html