Skip to content

Instantly share code, notes, and snippets.

@c0depanda
Created January 12, 2019 21:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save c0depanda/6dd0ae0bf70a5709321f27c03e63c51b to your computer and use it in GitHub Desktop.
Save c0depanda/6dd0ae0bf70a5709321f27c03e63c51b to your computer and use it in GitHub Desktop.
// import Vue
import Vue from 'vue';
// import Vuex
import Vuex from 'vuex';
// Install the Vuex plugin on vue
Vue.use(Vuex);
// create a Vuex store instance
export const store = new Vuex.Store({
state: {
cart: ["bread", "rice", "beans", "turkey"]
},
getters: {
// Fetch the total number of items in the cart
totalNumberOfCartItems: state => {
return state.cart.length;
},
},
mutations: {
// Add item to cart
addItemToCart (state, payload) {
state.cart.push(payload);
},
// Clear items in the cart
emtpyCart (state) {
state.cart = [];
}
},
actions: {
checkout({commit}, requestObject) {
return new Promise((resolve, reject) => {
// API Call to submit the items in the cart
Vue.http.post('submit', requestObject).then((response) => {
// log success
console.log(response);
// Clear Cart by mutating the state
commit('emptyCart');
// return success
resolve(response);
}).catch((error) => {
// log error
console.log(error);
// return error
reject(error);
}
})
}
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment