React Redux组合减速器

时间:2016-12-19 15:14:57

标签: reactjs redux

在Redux中,如果我使用的话说如下数据结构:

{ 
    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: []
}

我使用Redux combineReducers

combineReducers({products, shoppingCart, checkoutCart})

如果我想将shopping Cart数据复制到checkoutCart对点击事件的说法,我会在哪里这样做/或者我应该这样做?

3 个答案:

答案 0 :(得分:0)

当你使用combineReducers时,你假设减速器是独立的,他们看不到彼此的状态。每个减速器只会收到一个州的“切片”。

为了实现您的目标,我会考虑将shoppingCartcheckoutCart reducers / state加入一个并使用switch (action.type)知道该怎么做。

现在您可以在新的reducer上创建一个返回类似

的动作
  

{checkoutCart:clone(state.shoppingCart)}

答案 1 :(得分:0)

我会使用操作并将整个购物车数据作为有效负载发送

如果难以传递组件中购物车的数据,您可以按照此处所述https://stackoverflow.com/a/35674575/1868008访问操作创建器中的状态,但您需要使用redux-thunk

答案 2 :(得分:0)

如果您想将shoppingCart克隆到checkoutCart。您可以在onClick函数中将this.props.shoppingCart作为动作调用的参数传递。

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