【发布时间】:2020-10-01 23:39:29
【问题描述】:
我正在通过 VSCode 的 Live Server 扩展运行应用程序。
此应用程序(电子商务网站)将商品保存到 cartItems 数组中,只要单击 addToCart 按钮,该数组就会写入 localStorage。我可以在 DevTools/Application/LocalStorage 中看到,当执行指定的操作时,项目正在正确保存。
但是,每当我刷新页面或导航到同一应用程序中的不同页面时,我的 localStorage 都会被清除。
在向 localStorage 写入项目时,我尝试调用 localStorage 简写,以及更明确的 window.localStorage。两者都没有解决这个问题。
当应用程序在本地或通过实时服务器运行时,localStorage 是否不会持续存在?我怀疑应该这样做,但我做错了其他事情。
只读的
localStorage属性允许您访问StorageDocument来源的对象;存储的数据保存在 浏览器会话。localStorage类似于sessionStorage,除了 虽然存储在localStorage中的数据没有过期时间,但数据 当页面会话结束时,存储在sessionStorage中的内容会被清除 — 也就是说,当页面关闭时。 (localStorage对象中的数据 在“隐私浏览”或“隐身”会话中创建的内容在以下情况下被清除 最后一个“私人”标签已关闭。)
会不会是实时服务器上的每次刷新或页面更改都代表了全新的设备历史? (再一次,这似乎是合理的,但仍然不太可能。不过,我很高兴自己错了。)
提前感谢您提供的任何指导。
编辑 - 以下是一些相关代码:
在全局范围内:
const cartItems = [];
localStorage.setItem('cartItemsKey', JSON.stringify(cartItems));
localStorage.getItem('cartItemsKey');
const cartItemsInStorage = localStorage.getItem('cartItemsKey');
Encapsulated - 单击 addToCart 按钮时会触发此函数。省略大部分内容,除了与localStorage 有关的部分,为简洁起见:
function addToCart (button) {
// Create newCartItem object using relevant data
cartItems.push(newCartItem);
localStorage.removeItem('cartItemsKey');
localStorage.setItem('cartItemsKey', JSON.stringify(cartItems));
}
再次,根据下面的屏幕记录,我可以看到项目已成功保存到 localStorage。当我刷新或更改页面时遇到问题。
【问题讨论】:
标签: javascript visual-studio-code local-storage persistence