// store/index.js
import { createStore } from 'vuex'
export default createStore({
state: {
user: null,
todos: []
},
mutations: {
SET_USER(state, user) {
state.user = user
},
ADD_TODO(state, todo) {
state.todos.push(todo)
},
TOGGLE_TODO(state, todoId) {
const todo = state.todos.find(t => t.id === todoId)
if (todo) {
todo.completed = !todo.completed
}
}
},
actions: {
async fetchUser({ commit }, userId) {
try {
const response = await fetch(`/api/users/${userId}`)
const user = await response.json()
commit('SET_USER', user)
} catch (error) {
console.error('获取用户失败:', error)
}
},
addTodo({ commit }, todo) {
commit('ADD_TODO', {
id: Date.now(),
text: todo,
completed: false
})
}
},
getters: {
completedTodos: state => {
return state.todos.filter(todo => todo.completed)
},
pendingTodos: state => {
return state.todos.filter(todo => !todo.completed)
}
}
})