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(), но кроме постоянно грузящейся страницы ничего не получила.

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

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

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

Войти через центр авторизации
Похожие вопросы