2016-12-19 119 views
2

在終極版,如果我用說的數據結構如下:陣營終極版結合減速

{ 
    products: [ 
       {id:1, name:'tv', description:'A color Sony TV', cost:1000}, 
       {id:2, name:'remote control', description:'A black compact Remote Control', cost: 999} 
    ], 
    shoppingCart: [], 
    checkoutCart: [] 
} 

而且我用的是終極版combineReducers

combineReducers({products, shoppingCart, checkoutCart}) 

如果我想的shopping Cart數據複製到checkoutCart對點擊事件說,我該怎麼做/我應該這樣做?

回答

0

當你使用combineReducers你假設減速器是獨立的,他們不能看到彼此的狀態。每個減速器只會收到狀態的「切片」。

爲了達到您想要的效果,我會考慮將shoppingCartcheckoutCart減速器/狀態合併爲一個並使用switch (action.type)來知道該怎麼做。

現在,你可以簡單地創建新的減速機返回類似

一個動作{checkoutCart:克隆(state.shoppingCart)}

+0

因此,我必須將'shoppingCart'和'checkoutCart'向下移動一個級別(在狀態數據中),以便可以通過相應的縮減器訪問該切片。 – avrono

+0

@avrono。這是一種可能性。正如其他人所說的,您也可以選擇將'shoppingCart'作爲動作的有效載荷。 –

+0

@avrono我認爲這是你認爲最適合的問題 –

0

我會用行動和全送作爲有效載荷的購物車數據

如果難以在組件中傳遞購物車的數據,則可以訪問動作創建者的狀態,如https://stackoverflow.com/a/35674575/1868008所述,但是您需要使用redux- thunk

0

如果您想將shoppingCart克隆到checkoutCart。您可以在onClick函數中將this.props.shoppingCart作爲參數傳遞給您的動作調用。

onClick(e) { 
    this.props.checkOutActions.checkOut(this.props.shoppingCart); 
}