sessionStorage работает, но localStorage получает ошибку JSON.parse, в чем разница?

#angular #typescript #local-storage #session-storage

#angular #машинописный текст #локальное хранилище #сеанс-хранилище

Вопрос:

Следующий код работает, если я делаю одно изменение: замена localStorage на sessionStorage .

Кто-нибудь может объяснить почему? Насколько мне известно, они идентичны по функциональности и отличаются только тем, что sessionStorage ограничен вкладкой.

   read(key: string): any {
    const item = localStorage.getItem(key);
    return JSON.parse(item);
  }

  write(key: string, value: any): void {
    localStorage.setItem(`${key}`, JSON.stringify(value));
  }
 

Комментарии:

1. В обоих случаях я получаю сообщение об ошибке typescript, потому item что может быть null , и вы не можете позвонить JSON.parse(null) . Это может помочь : return item ? JSON.parse(item) : undefined; . Если это не так, пожалуйста, обновите свой пост точным текстом ошибки, которую вы получаете.

2. Очистка кэша решила эту проблему. Вероятно, проблема была вызвана предыдущим упущением в неиспользовании stringify , что привело к хранению недопустимого содержимого.