почему мне нужно использовать оператор распространения и делать клонирование объекта для обновления свойств объекта в реакции - PullRequest
0 голосов
/ 07 августа 2020

Я просто хочу знать, почему мне нужно использовать оператор распространения для обновления свойств объекта в response & redux, например, у меня есть эта функция, которая принимает список элементов и элемент, который я хочу изменить, если я ввожу его с помощью этого синтаксиса it работа

export const decreaseCartItem = (item , itemToInc) => {

    return item.map(item => itemToInc.id === item.id ? {...item , qty : item.qty - 1} : item);
  

}

почему я не могу изменить его прямо вот так ??

export const decreaseCartItem = (item , itemToInc) => {

    return item.map(item => itemToInc.id === item.id ? item.qty - 1 : item);
  

}

почему первый синтаксис работает, а se c не работает, когда я использую это в редукторе redux и в реакции, и почему мне нужно создать объект клонирования и вернуть его?

Я надеюсь найти ответ

1 Ответ

0 голосов
/ 07 августа 2020

Потому что во втором вы сопоставляете элемент с его количеством - 1, вместо элемента с идентичным объектом, за исключением того, что его количество уменьшается на единицу.

const itemToInc = {id: 1}
console.log([{id: 1, qty: 2}].map(item => itemToInc.id === item.id ? item.qty - 1 : item));
console.log([{id: 1, qty: 2}].map(item => itemToInc.id === item.id ? {...item, qty: item.qty - 1} : item));
...