Сохранение объектов в массиве все еще перезаписывается - PullRequest
0 голосов
/ 09 апреля 2020

Я сейчас работаю над сохранением объектов в массиве, проблема в том, что данные не добавляются, а перезаписываются. Некоторые идеи.

export function onClick(name: string, price: string) {
  let data = { name: name, price: price };
  //newData
  sessionStorage.setItem("newData", JSON.stringify(data));
  let newData = JSON.parse(sessionStorage.getItem("newData"));
  //Cart
  let cartData = [];
  cartData.push(newData);
  sessionStorage.setItem("cart", JSON.stringify(cartData));
  let cart = JSON.parse(sessionStorage.getItem("cart"));
  console.log(cart); //todo LOG
}

Мне нужен этот результат:

[
    0: {name:'test1',price:'150'}
    1: {name:'test2',price:'180'}
    2: {name:'test3',price:'190'}
    3: {name:'test4',price:'150'}
    4: {name:'test5',price:'180'}
    5: {name:'test6',price:'190'}
]

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Перемещение cartData = [] из функции, каждый раз, когда пользователь нажимает, вы переопределяете cartData

//Cart
let cartData = [];

export function onClick(name: string, price: string) {
  let data = { name: name, price: price };
  //newData
  sessionStorage.setItem("newData", JSON.stringify(data));
  let newData = JSON.parse(sessionStorage.getItem("newData"));
  cartData.push(newData);
  sessionStorage.setItem("cart", JSON.stringify(cartData));
  let cart = JSON.parse(sessionStorage.getItem("cart"));
  console.log(cart); //todo LOG
}
0 голосов
/ 09 апреля 2020

Вы ничего не делаете с исходными данными в хранилище, только перезаписываете их.

export function onClick(name: string, price: string) {
    let newData = {'name': name, 'price': price};

    //Cart
    let cartData = JSON.parse(sessionStorage.getItem('cart'));
    cartData.push(newData);

    sessionStorage.setItem('cart', JSON.stringify(cartData));


    //some other place where you need to access the cart
    let cart = JSON.parse(sessionStorage.getItem('cart'));

    console.log(cart); //todo LOG
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...