我正在使用VSCode的Live Server扩展程序运行一个应用程序。
这个应用程序(电子商务网站)将物品保存到cartItems数组中,每当单击addToCart按钮时,该数组就会被写入localStorage。当执行指定操作时,我可以在DevTools / Application / LocalStorage中看到项目被正确保存。
然而,每当刷新页面或在同一应用程序内导航到其他页面时,我的localStorage都会被清除。
当将项目写入localStorage时,我尝试调用localStorage
简短命令,以及更明确的window.localStorage
,但对于此问题,两种方法都没有起作用。
当本地运行或通过实时服务器运行应用程序时,localStorage是否不会持久保留?我怀疑它应该可以,并且我正在做一些其他不正确的事情。
MDN文档提到:
只读的localStorage
属性允许您访问Document
的来源的Storage
对象;存储的数据会跨浏览器会话保存下来。 localStorage
类似于sessionStorage
,但是,尽管存储在localStorage
中的数据没有过期时间,存储在sessionStorage
中的数据在页面会话结束时被清除 - 也就是说,在页面关闭时。(在“隐私浏览”或“无痕浏览”会话中创建的localStorage
对象中的数据在关闭最后一个“私人”选项卡时被清除。)每次在实时服务器上刷新或更改页面是否代表完全新的设备历史记录?(这仍然不太可能,但感觉可信。但我很高兴错了。)
提前感谢您能提供的任何指导。
编辑 - 这是相关代码的一部分:
全局作用域中:
const cartItems = [];
localStorage.setItem('cartItemsKey', JSON.stringify(cartItems));
localStorage.getItem('cartItemsKey');
const cartItemsInStorage = localStorage.getItem('cartItemsKey');
封装 - 当点击addToCart按钮时,此函数被触发。为了简洁起见,省略了大部分内容,只保留与localStorage
有关的部分:
function addToCart (button) {
// Create newCartItem object using relevant data
cartItems.push(newCartItem);
localStorage.removeItem('cartItemsKey');
localStorage.setItem('cartItemsKey', JSON.stringify(cartItems));
}
我可以看到,根据下面的屏幕录像,项目已经成功保存到本地存储中。问题出现在我刷新或更改页面时。
addToCart()
函数中,我有两行代码,在那里我删除了该项,然后重新设置了它。然而,即使我删除.removeItem()
调用,问题仍然存在。 - mikekoscinski