React Redux状态不替换

时间:2017-06-26 09:20:19

标签: javascript reactjs redux react-redux redux-thunk

我正在尝试通过操作获取新批次的产品,然后用新批次替换状态,但它只是将其添加到数组...

这是我控制状态的减速器:

const initialState = {
  fetching: false,
  fetched: false,
  Brands:[],
  Markings:[],
  Products: [],
  error: null
}

export default function reducer(state=initialState, action=null) {
  switch (action.type){

    case "FETCH_PRODUCTS_PENDING" : {
      return {...state}
      break;
    }
    case "FETCH_PRODUCTS_REJECTED" : {
      return {...state}
      break;
    }
    case "FETCH_PRODUCTS_FULFILLED" : {
      return{ ...state, 
        Products: state.Products.concat(action.payload.data.Products),
        Brands: action.payload.data.Facets[0].Facets,
        Markings: action.payload.data.Facets[1].Facets
      }
      break;
    }
  }
  return state
}

在履行情况下出错了......我不确定这是怎样的......状态"工作,我需要做一个对象分配或什么?

加载后我得到了52个产品,当我试图申请一个新的批次时,它会把它添加起来所以我的this.props.products是104个项目......我想要它替换

1 个答案:

答案 0 :(得分:2)

这一行是罪魁祸首

Products: state.Products.concat(action.payload.data.Products),

在这种情况下,您要做的就是将Products数组替换为操作中的数组。

所以它应该只是

Products: action.payload.data.Products

请点击此处查看有关spread operator的详细说明: https://ponyfoo.com/articles/es6-spread-and-butter-in-depth