74 lines
1.3 KiB
JavaScript
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;
|