объединить объект в массив в реагировать родной редукс - PullRequest
0 голосов
/ 11 мая 2019

У меня есть проблема в конкатате объекта в массив с использованием приставки.когда пользователь нажимает кнопку, я хочу объединить объект в массив, но всегда отображается ошибка «Не удается прочитать свойство concat» со значением NULL.вот мои коды:

  addToCartHandler= ()=>{
    const {phoneNumber,accessToken,ctr} = this.props;
    let {dataSource} = this.state;
    const cart = {title:dataSource.title,image:dataSource.image,id:dataSource.id,count:ctr,price:(dataSource.price-dataSource.discount)*ctr};
    this.props.onCart(cart);}
    .
    .
    .
    .
    
    const mapDispatchToProps = dispatch => {
  return {
    onLogin: () => dispatch({ type: actionTypes.SAVEPHONE }),
    onToken: token => dispatch({ type: actionTypes.SAVEACCESSTOKEN, token }),
    onCart:(cart)=>dispatch({type:actionTypes.CARTPRODUCT,cart})
  }
    
}

и это мой редуктор:

const initialState = {
   cartProduct:[],
}

const ShopReducer = (state=initialState,action)=>{
    switch(action.type){
        case actionTypes.CARTPRODUCT:
        return {
            ...state,
            cartProduct:state.cartProduct.concat(action.cart)
        }
        default:
        return state
    }
}

1 Ответ

0 голосов
/ 12 мая 2019

Вы не можете объединить массив с объектом.вместо этого оберните ваш объект массивом, как показано во фрагменте

const initialState = {
   cartProduct:[],
}

const ShopReducer = (state=initialState,action)=>{
    switch(action.type){
        case actionTypes.CARTPRODUCT:
        return {
            ...state,
            cartProduct:state.cartProduct.concat([action.cart]) // change here
        }
        default:
        return state
    }
}

Не тестировалось !!.Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...