|
|
1 dag geleden | |
|---|---|---|
| .. | ||
| modules | 1 dag geleden | |
| README.md | 1 dag geleden | |
| index.js | 1 dag geleden | |
store/
├── index.js # Pinia 实例
├── README.md # 使用说明
└── modules/ # 状态模块
├── user.js # 用户状态
└── ... # 其他模块
<script setup>
import { useUserStore } from '@/store/modules/user.js'
import { storeToRefs } from 'pinia'
// 方式一:直接使用(推荐用于修改数据)
const userStore = useUserStore()
// 方式二:使用 storeToRefs(推荐用于读取,保持响应式)
const { token, userInfo, isLoggedIn } = storeToRefs(userStore)
// 调用方法
userStore.loginSuccess({ token: 'xxx', userInfo: {...} })
userStore.logout()
</script>
import { useUserStore } from '@/store/modules/user.js'
import { createPinia } from 'pinia'
// 注意:在非组件中使用时,需要确保 pinia 已初始化
const userStore = useUserStore()
状态:
token - 登录令牌userInfo - 用户信息对象计算属性:
isLoggedIn - 是否已登录userName - 用户名userAvatar - 用户头像方法:
setToken(token) - 设置 tokensetUserInfo(info) - 设置用户信息loginSuccess(data) - 登录成功处理logout() - 退出登录updateUserInfo(info) - 更新用户信息在 store/modules/ 目录下创建新文件:
// store/modules/todo.js
import { defineStore } from 'pinia'
import { ref } from 'vue'
export const useTodoStore = defineStore('todo', () => {
// 状态
const list = ref([])
// 方法
const addTodo = (item) => {
list.value.push(item)
}
return {
list,
addTodo
}
})
uni.setStorageSync 手动持久化重要数据从 utils/userCache.js 迁移到 Pinia:
之前:
import { getUserInfo, isLogin } from '@/utils/userCache.js'
const info = getUserInfo()
现在:
import { useUserStore } from '@/store/modules/user.js'
const userStore = useUserStore()
const info = userStore.userInfo