C
C
chatterbox7772020-04-26 15:30:21
JavaScript
chatterbox777, 2020-04-26 15:30:21

How to change clicked from false to true?

in the BasketReducer, you need to return a copy of the state and change the value of the clicked BasketItem to true,
how to write after

return {
...state,
// что здесь писать? как добраться до clicked ? я пытался так но соответственно пишет что неправильный синтаксис 
state.basketItems[action.id].clicked = !state.basketItems[action.id].clicked,
}


dispatcher

addItemToBasket: (e, id) => dispatch({ type: "ADD_BASKET", e: e, id: id })

basket-reducer.js

let initialState = {
  basketItems: [
    {
      BasketItemId: 1,
      description: "Это прекрасный товар, который Вам обязательно стоит взять",
      imgSrc:
        "https://remontdoma24.ru/image/cache/data/ruchnoj-instrument-hoztovary/sadoviy-unstrument-i-inventar/vedra/65428-230x230.jpg",
      clicked: false,
    },
    {
      BasketItemId: 2,
      description: "Это прекрасный товар, который Вам обязательно стоит взять",
      imgSrc:
        "https://hailo.moscow/thumb/2/jXDp6iWcmPKzSiOvkaV2IQ/200r200/d/hailo_profiline_solid_0514-079_v_magazine_hailomoscow.jpg",
      clicked: false,
    },
    {
      BasketItemId: 3,
      description: "Это прекрасный товар, который Вам обязательно стоит взять",
      imgSrc:
        "https://suplbiz-a.akamaihd.net/media/cache/8d/bc/8dbc89845bdf0a9fb6174979ce950591.jpg",
      clicked: false,
    },
    {
      BasketItemId: 4,
      description: "Это прекрасный товар, который Вам обязательно стоит взять",
      imgSrc:
        "https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_278,h_278,c_pad,b_white,d_photoiscoming.png/LMCode/82402777.jpg",
      clicked: false,
    },
    {
      BasketItemId: 5,
      description: "Это прекрасный товар, который Вам обязательно стоит взять",
      imgSrc:
        "https://prorab01.ru/upload/w_512/448302da09724b314b3612ba5b8297d1.jpg",
      clicked: false,
    },
    {
      BasketItemId: 6,
      description: "Это прекрасный товар, который Вам обязательно стоит взять",
      imgSrc:
        "https://www.alternat.ru/upload/iblock/945/9459eba2a7bf682d267c7aff170f9e75.jpg",
      clicked: false,
    },
  ],
};

export const basketReducer = (state = initialState, action) => {
  switch (action.type) {
    case "ADD_BASKET":
      return {
        ...state,
       // пытаюсь прописать  state.basketItems[action.id].clicked = !state.basketItems[action.id].clicked
      };

    default:
      return state;
  }
};

Answer the question

In order to leave comments, you need to log in

1 answer(s)
0
0xD34F, 2020-04-26
@chatterbox777

return {
  ...state,
  basketItems: state.basketItems.map(n => n.id === action.id
    ? { ...n, clicked: !n.clicked }
    : n
  ),
};

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question