Здесь происходит то, что вы переопределяете ключ, в котором храните продукт.Если вы делаете localStorage.setItem('id', something)
и после localStorage.setItem('id', otherThing)
.Когда вы делаете localStorage.getItem('id')
, вы получите otherThing
, потому что оно переопределяется, когда вы устанавливаете элемент на something
.
В localStorage
, вы можете иметь только уникальные ключи.Не может быть более одного значения для одного и того же ключа.
Чтобы сохранить более одного продукта, нужно сохранить продукты в виде массива.
function addProductToCart() {
let productsString = localStorage.getItem('products')
let products = []
if(productsString){
products = JSON.parse(productsString)
}
products.concat([location.state])
localStorage.setItem('products', JSON.stringify(products)) // set products as an array
}
И при получении продуктавы получаете полный массив со всеми продуктами.
const showProduct = () => {
localStorage.getItem('products'); // gets an array of the products
}
И если вы хотите получить последний продукт, вы должны сделать
const getLastProduct = () => {
let productString = localStorage.getItem('products')
let products = JSON.parse(productString)
return products[products.length - 1]
}
Вы должны заметить, что вы должны сохранить массивиспользуя JSON.stringify
и получите его используя JSON.parse
.