Redux,何时拆分减速机?

时间:2017-10-28 14:51:56

标签: reactjs redux

我有一个Redux商店,其减速器由9个case语句组成。其中六个案例涉及填充状态白色三个数组处理排序所述数组,因此没有自然的方法来分割减速器,是否可以将减速器保留为一个?

2 个答案:

答案 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] } }