Added Vuex

This commit is contained in:
2019-05-29 01:49:49 +03:00
parent 1b625609bd
commit 6b98bc880f
20 changed files with 176 additions and 86 deletions

11
src/store/index.js Normal file
View File

@@ -0,0 +1,11 @@
import Vue from "vue";
import Vuex from "vuex";
import todos from "./modules/todos";
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
todos
}
});

View File

@@ -0,0 +1,59 @@
import uuid from 'uuid'
const state = {
todos: [
{
id: uuid.v4(),
name: "Что-то, что я собираюсь сделать",
completed: false
},
{
id: uuid.v4(),
name: "Что-то, что я уже сделал",
completed: true
}
]
};
const getters = {
allTodos: (state) => state.todos
};
const actions = {
async toggleComplete({commit}, id) {
commit('toggleComplete', id)
},
async addTodo({commit}, name) {
commit('addTodo', name)
},
async delTodo({commit}, id) {
commit('delTodo', id)
}
};
const mutations = {
toggleComplete(state, id) {
state.todos.forEach(element => {
if (element.id == id) {
element.completed = !element.completed
}
});
},
addTodo(state, n) {
state.todos.unshift({
id: uuid.v4(),
name: n,
completed: false
});
},
delTodo(state, id) {
state.todos = state.todos.filter(todo => todo.id !== id);
}
};
export default {
state,
getters,
actions,
mutations
};