@chatterbox777

Как поменять clicked с false на true?

В BasketReducer надо вернуть копию state и изменить значение кликнутого BasketItem'а на true, как прописать после

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

диспатч:

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;
  }
};
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
0xD34F
@0xD34F
return {
  ...state,
  basketItems: state.basketItems.map(n => n.id === action.id
    ? { ...n, clicked: !n.clicked }
    : n
  ),
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы