This repository has been archived on 2021-09-06. You can view files and clone it, but cannot push or open issues or pull requests.
vuejs_course/2021-05-04_vuex-01-starting.../src/store.js

74 lines
1.3 KiB
JavaScript

import { createStore } from 'vuex';
const counterModule = {
state() {
return {
counter: 0
};
},
actions: {
increment(context) {
setTimeout(function() {
context.commit('increment');
}, 2000);
},
increase(context, payload) {
context.commit('increase', payload);
}
},
mutations: {
increment(state) {
state.counter = state.counter + 1;
},
increase(state, payload) {
state.counter = state.counter + payload.value;
}
},
getters: {
finalCounter(state) {
return state.counter * 3;
},
normalizedCounter(_, getters) {
const finalCounter = getters.finalCounter;
if (finalCounter < 0) {
return 0;
}
if (finalCounter > 100) {
return 100;
}
return finalCounter;
}
}
};
const store = createStore({
modules: {
counter: counterModule
},
state() {
return {
isLoggedIn: false
};
},
mutations: {
setAuth(state, payload) {
state.isLoggedIn = payload.isAuth;
}
},
getters: {
userIsAuthenticated(state) {
return state.isLoggedIn;
}
},
actions: {
login(context) {
context.commit('setAuth', { isAuth: true });
},
logout(context) {
context.commit('setAuth', { isAuth: false });
}
}
});
export default store;