状态管理
与web端保持一致,app使用 pinia 作为状态管理工具
多个页面公用数据可在store中进行保存,当前项目未配置store持久化,app进程关闭即清空
项目store
用户(user)
获取用户相关信息:id、昵称、用户名、头像、角色、权限、部门、岗位
提供用户相关方法:登录、退出登录、修改密码、认证失效、初始化用户信息、修改默认部门、清空用户信息、处理头像、获取默认头像
字典(dict)
保存字典相关数据,一般业务组件中不主动调用,通过utils/Dict来获取字典
通知(notice)
- 获取消息通知相关信息:未读数量、是否tabBar上显示红点
- 提供消息通知相关方法:获取未读数量、预览、已读标记、处理红点
根节点(root)
因uniapp没有vue意义上的根节点,项目中引入了uni-ku/root 组件来实现全局根节点
在rootStore中可在全局获取root节点的ref
主题(theme)
- 获取主题相关信息:当前主题
- 提供主题相关方法:设置主题
使用store
在组件或ts文件中,引入对应store后初始化即可使用,例:
<script setup lang="ts">
import { onMounted, onUnmounted, ref } from 'vue'
// 引入store
import {useNoticeStore} from "@/stores/notice"
// 初始化store
const noticeStore = useNoticeStore()
// 使用store
onMounted(() => {
noticeStore.getUnreadCount()
})
</script>新建store
在
src/stores/下新建对应ts文件在ts文件中引入
import { defineStore } from "pinia";指定id,定义state、actions后命名抛出
// 引入 defineStore import { defineStore } from "pinia"; // 定义 defineStore 后抛出 命名为 useXxxxxxStore export const useCustomStore = defineStore('custom', { // 定义属性 state: () => { const data: any = undefined return { data } }, // 定义方法 actions: { handleData(data: any) { this.data = data } } })

