@sickgang

Как при клике на кнопку оформления заказа очистить state?

При клике на кнопку оформления заказа, вызываю функцию, где собираются все данные и отправляются на сервер и дальше обрабатываются.
Но при закрытии корзины, количество товара остается все там же, пробовал через localstorage чистить, все очищается, но потом я не могу добавлять товары в корзину.
Я так понял, нужно из функции вызывать мутацию в store.js, и что сделать чтобы очистить state и товары потом добавлялись?
Вот такой у меня store.js:

let cart = window.localStorage.getItem('cart')
let cartCount = window.localStorage.getItem('cartCount')

let store = {
  state: {
      cart: cart ? JSON.parse(cart) : [],
      cartCount: cartCount ? parseInt(cartCount) : 0
  },
  mutations: {
    addToCart(state, item) {
      let found = state.cart.find(product => product.id == item.id)
       if (found) {
           found.quantity ++
           found.totalPrice = found.quantity * found.price
       } else {
           state.cart.push(item)

           Vue.set(item, 'quantity', 1)
           Vue.set(item, 'totalPrice', item.price)
       }

       state.cartCount++
       this.commit('saveCart')
    },
    removeFromBasket(state, item) {
      let index = state.cart.indexOf(item)
      console.log(cartCount)
      if (index > -1) {
          let product = state.cart[index]
          state.cartCount -= product.quantity

          state.cart.splice(index, 1)
      }
      this.commit('saveCart')
    },
    increment(state, index) {
      state.cart[index].quantity++
      state.cartCount++
      state.cart[index].totalPrice = state.cart[index].quantity * state.cart[index].price
      this.commit('saveCart')
    },
    decrement(state, index) {
      if (state.cart[index].quantity > 1) {
        state.cart[index].quantity--
        state.cartCount--
        state.cart[index].totalPrice -= state.cart[index].price
      }
    },
    deleteCart() {
      // console.log(store.state)
      // let newState = {}
      // this.state.replaceState(newState)
      // console.log(store.state)
      // state.replaceState({})
      // window.localStorage.setItem('cart', [])
      // window.localStorage.setItem('cartCount', 0)
      this.commit('saveCart')
    },
    saveCart(state) {
      window.localStorage.setItem('cart', JSON.stringify(state.cart))
      window.localStorage.setItem('cartCount', state.cartCount)
    }
  },
  actions: {
    INCREMENT_CART_ITEM({commit}, index) {
      commit('increment', index)
    },
    DECREMENT_CART_ITEM({commit}, index) {
      commit('decrement', index)
    }
  }
};

export default store
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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