mirror of
https://github.com/anatolykopyl/vue-todo-list.git
synced 2026-03-26 12:55:17 +00:00
Added Vuex
This commit is contained in:
11
src/store/index.js
Normal file
11
src/store/index.js
Normal 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
|
||||
}
|
||||
});
|
||||
59
src/store/modules/todos.js
Normal file
59
src/store/modules/todos.js
Normal 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
|
||||
};
|
||||
Reference in New Issue
Block a user