我正在努力思考如何改变redux中的深度嵌套状态.对我来说,组合减缩器并改变这些片段的状态的一级属性是有意义的.我不太清楚的是如何更改深度嵌套属性的状态.
{
cart: {
items: []
},
account: {
amountLeft: 100,
discounts: {
redeemed: [],
coupons: {
buyOneGetOne: false
}
}
}
}
当用户输入代码时,假设他们可以兑换"buyOneGetOne"优惠券,该值应该为真.
case 'EMPTY_CART':
return Object.assign({}, state, {items: []});
然而,为了改变buyOneGetOne,我似乎首先需要做一个对象.分配优惠券(因为buyOneGetOne已被修改),然后执行一个对象.分配折扣(因为我修改了优惠券),然后最终发出动作,这样减速机就可以执行对象.在帐户上分配(因为折扣现在已更改).不过,这似乎非常复杂,而且很容易出错,这让我相信一定有更好的方法.
我做错了吗?似乎减缩器只用于修改状态的根级别属性(如cart和account),我不应该让减缩器触及帐户内的状态(如折扣减缩器),因为account已经有了减缩器.但是,当我只想更改状态树下的一个属性时,将从该更改到对象链上的每个对象合并到根的子对象会变得很复杂...
你能/应该在减速机里面装减速机吗,比如在这种情况下有减速机?