打开新选项卡会丢失本地存储中的数组列表 javascript 堆栈溢出
opening a new tab loses the arraylist in local storage javascript stack overflow
我的应用程序工作试图在我的本地存储上存储一些数据,当我没有打开任何新选项卡或 window 时,这工作正常,但是当我打开一个新选项卡时,我的数组丢失了它以前存储的所有内容数据并仅存储当前数据。请在这里指出我做错了什么。
我的代码是这样的:
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
var retrievedData = localStorage.getItem('getCurrReqIdList');
var getFinalReqIdList = JSON.parse(retrievedData);
if(getFinalReqIdList.length > maxCurrentConnectionLength) {
console.log('Hello');
getFinalReqIdList.shift();
getCurrReqIdList.shift();
localStorage.setItem('getCurrReqIdList',JSON.stringify(getFinalReqIdList));
}
post有点令人困惑,但我敢打赌你有这些行
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
运行ning 每次加载页面时,用于初始化商店。因此,当您打开一个新选项卡时,它会加载页面并用一个空数组覆盖本地存储值。
您的页面应该 运行 类似于:
getCurrReqIdList = localStorage.getItem('getCurrReqIdList');
if(getCurrReqIdList) {
getCurrReqIdList = JSON.parse(getCurrReqIdList);
} else {
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
}
这不应该发生,因为存储在 localStorage 对象中的数据也会在选项卡之间共享。
您可能有一些其他代码会在您打开新标签页后立即重置或删除 localStorage 中的数据。
根据:This
您不能使用 sessionStorage 在多个选项卡之间共享数据,因为一个新页面就是一个新会话。
你需要更换
setStorageType('sessionStorage')
来自
setStorageType('localStorage') // which is default
我的应用程序工作试图在我的本地存储上存储一些数据,当我没有打开任何新选项卡或 window 时,这工作正常,但是当我打开一个新选项卡时,我的数组丢失了它以前存储的所有内容数据并仅存储当前数据。请在这里指出我做错了什么。
我的代码是这样的:
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
var retrievedData = localStorage.getItem('getCurrReqIdList');
var getFinalReqIdList = JSON.parse(retrievedData);
if(getFinalReqIdList.length > maxCurrentConnectionLength) {
console.log('Hello');
getFinalReqIdList.shift();
getCurrReqIdList.shift();
localStorage.setItem('getCurrReqIdList',JSON.stringify(getFinalReqIdList));
}
post有点令人困惑,但我敢打赌你有这些行
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
运行ning 每次加载页面时,用于初始化商店。因此,当您打开一个新选项卡时,它会加载页面并用一个空数组覆盖本地存储值。
您的页面应该 运行 类似于:
getCurrReqIdList = localStorage.getItem('getCurrReqIdList');
if(getCurrReqIdList) {
getCurrReqIdList = JSON.parse(getCurrReqIdList);
} else {
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
}
这不应该发生,因为存储在 localStorage 对象中的数据也会在选项卡之间共享。
您可能有一些其他代码会在您打开新标签页后立即重置或删除 localStorage 中的数据。
根据:This
您不能使用 sessionStorage 在多个选项卡之间共享数据,因为一个新页面就是一个新会话。
你需要更换
setStorageType('sessionStorage')
来自
setStorageType('localStorage') // which is default