我有一个Redux商店,其减速器由9个case语句组成。其中六个案例涉及填充状态白色三个数组处理排序所述数组,因此没有自然的方法来分割减速器,是否可以将减速器保留为一个?
答案 0 :(得分:0)
是的,可以将减速机保留为一个。让我们说如果我有一个用户减速器,我会考虑拆分减速器,如果它太大而无法管理,或者它与用户无关,这是我的第一个。你只有9个开关盒,应该没问题。
答案 1 :(得分:0)
案例陈述的数量不是决定是否应拆分减速器的正确指标。相反,它是 你的reducer动作处理程序正在处理的状态切片的深度嵌套 。如果它太深,代码可能会爆炸。
让我们说你有这种状态:
{
cart: {
products: [ {name:"shirt"}, {name:"pants"} ],
checkout: false,
}
}
在单个/全局reducer设置中,您可能拥有此操作处理程序:
//reducer.js
case ADD_CART_PRODUCT:
const {newProduct} = payload
const {cart: {products}} = state
return {...state, cart: {...state.cart, products: [...products, newProduct] } }
不错,但是您可以为影响cartReducer
状态切片的操作处理程序拆分cart
,将代码缩减到此:
//cartReducer.js
case ADD_CART_PRODUCT:
const {newProduct} = payload
const {products} = state //this is actually state.cart from the global perspective
return {...state, products: [...products, newProduct] } }