1
0

ShoppingCart.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <template>
  2. <div class="cart">
  3. <h2>Your Cart</h2>
  4. <p v-show="!products.length"><i>Please add some products to cart.</i></p>
  5. <ul>
  6. <li
  7. v-for="product in products"
  8. :key="product.id">
  9. {{ product.title }} - {{ currency(product.price) }} x {{ product.quantity }}
  10. </li>
  11. </ul>
  12. <p>Total: {{ currency(total) }}</p>
  13. <p><button :disabled="!products.length" @click="checkout(products)">Checkout</button></p>
  14. <p v-show="checkoutStatus">Checkout {{ checkoutStatus }}.</p>
  15. </div>
  16. </template>
  17. <script>
  18. import { computed } from 'vue'
  19. import { useStore } from 'vuex'
  20. import { currency } from '../currency'
  21. export default {
  22. setup () {
  23. const store = useStore()
  24. const checkoutStatus = computed(() => store.state.cart.checkoutStatus)
  25. const products = computed(() => store.getters['cart/cartProducts'])
  26. const total = computed(() => store.getters['cart/cartTotalPrice'])
  27. const checkout = (products) => store.dispatch('cart/checkout', products)
  28. return {
  29. currency,
  30. checkoutStatus,
  31. products,
  32. total,
  33. checkout
  34. }
  35. }
  36. }
  37. </script>