nastya_zholudeva
@nastya_zholudeva

По какому событию можно вызвать этот код, чтобы данные из localStorage отображались корректно?

У меня есть компонент seenGoods, который выводит список просмотренных товаров. Он отображается практически на всех страницах. Данные для него я получаю из localStorage (по клику на товар, данные об этом товаре сохраняются в массив объектов таких же данных) и потом их с помощью vue отображаю в верске.
created() {
            this.$nextTick(function () {
var list = JSON.parse(localStorage.getItem('seenGoods'));

                if (list === null) {
                    list = [];
                } else {
                    list
                }
                this.goods = list;
            })
        }


Проблема в том, что если очистить localStorage, а потом "потыкать" на разные товары, то в localStorage все отображается как надо, но в верстке их нет (пустой массив). Пробовала этот код использовать в updated(), но кроме постоянно грузящейся страницы ничего не получила.

По какому событию можно вызвать этот код, чтобы данные отображались корректно
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
nikichv
@nikichv
Frontend dev. Current stack: Next.js/RTK/Saga
Если у вас этот компонент отображается практически на всех страницах, то лучше храните список просмотренных товаров в Vuex.
И получается у вас будет примерно такая схема:
  1. Пользователь зашел на сайт (не важно, впервые или нет), получаете просмотренные товары из localStorage и результат записываете в state;
  2. При клике добавляете товар в state и обновляете его в localStorage.

В сам компонент данные вы передаете именно из стэйта, а не из localStorage, именно это и гарантирует вам реактивность данных.
И проверку localStorage вы будете делать всего один раз при загрузке, допустим, корневого компонента.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы