Moja aplikacja próbuje zapisać niektóre danemój lokalny magazyn, który działa poprawnie, gdy nie otwieram żadnej nowej karty ani okna, ale kiedy otworzę nową kartę, moja tablica traci wszystkie poprzednie przechowywane dane i przechowuje tylko aktualne dane. Proszę zasugeruj, co robię źle tutaj.
mój kod jest mniej więcej taki:
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));
}
Odpowiedzi:
0 dla odpowiedzi № 1Post jest trochę zagmatwany, ale założę się, że masz linie
getCurrReqIdList = [];
localStorage.setItem("getCurrReqIdList", JSON.stringify(getCurrReqIdList));
działa za każdym razem, gdy ładujesz twoją stronę, aby zainicjować sklep. Tak więc po otwarciu nowej karty ładuje ona stronę i zastępuje wartość pamięci lokalnej pustą tablicą.
Twoja strona powinna działać w następujący sposób:
getCurrReqIdList = localStorage.getItem("getCurrReqIdList");
if(getCurrReqIdList) {
getCurrReqIdList = JSON.parse(getCurrReqIdList);
} else {
getCurrReqIdList = [];
localStorage.setItem("getCurrReqIdList", JSON.stringify(getCurrReqIdList));
}
0 dla odpowiedzi nr 2
Nie powinno się tak stać, ponieważ dane przechowywane w obiekcie localStorage będą również udostępniane między kartami.
Możesz mieć inny kod, który zresetuje lub usunie dane z localStorage, gdy tylko otworzysz nową kartę.
0 dla odpowiedzi № 3
Według: To
nie można udostępniać danych między wieloma kartami przy użyciu sessionStorage, ponieważ nowa strona jest nową sesją.
Musisz wymienić
setStorageType("sessionStorage")
przez
setStorageType("localStorage") // which is default