ключ приращения в sessionStorage - PullRequest
0 голосов
/ 19 мая 2018

Итак, у меня есть этот код здесь

var i = 0;
function contactUs(event){
    event.preventDefault();
    var lettre = new message();
    sessionStorage.setItem("lettreNo" + i++, JSON.stringify(lettre));
    $("form")[0].reset();
}

Но я знаю, что это неправильно, потому что ключ не будет увеличиваться, он просто переопределит вещь, если я перейду на другую страницу и вернусь после этого скриптаиспользуется всеми моими страницами, как мне это исправить?

1 Ответ

0 голосов
/ 19 мая 2018

Просто сохраните массив внутри одного свойства хранилища:

const letters = JSON.parse(sessionStorage.getItem("letters")) || [];
letters.push(letter /*?*/);
sessionStorage.setItem("letters", JSON.stringify(letters));

Или, если вы действительно хотите эту сложную ключевую вещь, имеет смысл создать помощника:

function sessionArray(name) {
   let length = +sessionStorage.getItem(name);

   return {
     get(key) {
        return JSON.parse(sessionStorage.getItem(name + key));
     }, 
     set(key, value) {
        if(key >= length) this.setLength(key + 1);
        sessionStorage.setItem(name + key, JSON.stringify(value));
     },
     setLength(l) {
        length = l;
        sessionStorage.setItem(name, length);
     },
     push(value) {
        this.set(length, value);
     }
   };
 }

Используется как:

 const letters = sessionArray("letters");
 letters.push({some: "thing"});
 console.log(letters.get(0));
...