Я пытаюсь разработать корзину покупок с помощью nuxt js. Я успешно сохраняю данные тележки в локальном хранилище, но не могу их получить.
Примечание: я не хочу использовать vuex-persistedstate.
🤔 А знаете ли вы, что...
JavaScript поддерживает асинхронное программирование с использованием промисов и асинхронных функций.
Я вижу много мелких проблем с этим.
Во-первых, похоже, что вы поставили addToCart
и saveInLocalStorage
, судя по тому, что вы фиксируете saveInLocalStorage
.
Мутации следует использовать только для установки состояния одной переменной Vuex.
Они должны быть чистыми, что означает, что у них не должно быть побочных эффектов.
Вам необходимо использовать действие для saveInLocalStorage
и действие для commit
, мутации addToCart
, прежде чем использовать dispatch
для запуска действия saveInLocalStorage
.
Во-вторых, неясно, где вы на самом деле запускаете эту функцию получения из локального хранилища. Вы используете его на верхнем уровне магазина Vuex?
Если это так, то для решения реальной проблемы, связанной с тем, что хранилище Vuex не обновляется, вам понадобится функция, отвечающая за получение значения storedCart
и использование его для установки cart
в качестве мутации, чтобы гарантировать, что хранилище Vuex действительно обновляется.
Наконец, здесь нет необходимости использовать троичную систему. Просто установите объект Vuex cart
как пустой массив.