Vue3后台管理系统二集成Pinia
目录
一、安装Pinia
npm install pinia
二、Pinia全局注册
1.在src下新建store文件夹,然后在store文件夹下新建index.ts内容如下:
-
// src/store/index.ts
-
import type { App } from 'vue';
-
import { createPinia } from 'pinia';
-
-
const store = createPinia();
-
-
// 全局挂载store
-
export function setupStore(app: App<Element>) {
-
app.use(store);
-
}
-
-
export { store };
2.修改main.ts为如下:
-
// src/main.ts
-
import {createApp} from 'vue'
-
import './style.css'
-
import App from './App.vue'
-
-
import ElementPlus from 'element-plus'
-
import 'element-plus/theme-chalk/index.css'
-
-
import {setupStore} from '@/store';
-
-
const app = createApp(App);
-
// 全局挂载
-
setupStore(app);
-
-
app
-
.use(ElementPlus)
-
.mount('#app');
三、Pinia模块封装
1.在store文件夹下新建modules文件夹,这里以用户状态为例:在modules文件夹下新建user文件夹,在于user文件夹下新建index.ts和types.ts内容如下:
-
// src/store/modules/user/index.ts
-
import { defineStore } from 'pinia';
-
-
import { store } from '@/store';
-
import { ref } from 'vue';
-
-
export const useUserStore = defineStore('user', () => {
-
// state
-
const token = ref<string>('');
-
const nickname = ref<string>('');
-
const avatar = ref<string>('');
-
const roles = ref<Array<string>>([]); // 用户角色编码集合 → 判断路由权限
-
const perms = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
-
-
// actions
-
-
// 登录
-
function login(loginData: any) {
-
return new Promise<void>((resolve, reject) => {
-
console.log(loginData)
-
// loginApi(loginData) // 调用登录API
-
});
-
}
-
-
// 获取信息(用户昵称、头像、角色集合、权限集合)
-
function getInfo() {
-
return new Promise<any>((resolve, reject) => {
-
// getUserInfo() // 调用获取用户信息API
-
});
-
}
-
-
// 注销
-
function logout() {
-
return new Promise<void>((resolve, reject) => {
-
// logoutApi() // 调用注销API
-
});
-
}
-
-
// 重置
-
function resetToken() {
-
// removeToken(); 调用删除Token方法
-
token.value = '';
-
nickname.value = '';
-
avatar.value = '';
-
roles.value = [];
-
perms.value = [];
-
}
-
return {
-
token,
-
nickname,
-
avatar,
-
roles,
-
perms,
-
login,
-
getInfo,
-
logout,
-
resetToken
-
};
-
});
-
-
// 非setup
-
export function useUserStoreHook() {
-
return useUserStore(store);
-
}
四、使用Pinia
①setup调用
②非setup调用
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghafgf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13