// stores/user.js
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
export const useUserStore = defineStore('user', () => {
// 状态
const users = ref([])
const currentUser = ref(null)
const isLoading = ref(false)
// 获取器
const activeUsers = computed(() =>
users.value.filter(user => user.status === 'active')
)
const userCount = computed(() => users.value.length)
// 动作
async function fetchUsers() {
isLoading.value = true
try {
const response = await fetch('/api/users')
users.value = await response.json()
} catch (error) {
console.error('获取用户失败:', error)
} finally {
isLoading.value = false
}
}
function addUser(user) {
users.value.push(user)
}
function setCurrentUser(user) {
currentUser.value = user
}
return {
users,
currentUser,
isLoading,
activeUsers,
userCount,
fetchUsers,
addUser,
setCurrentUser
}
})