当前位置: 首页 > ai >正文

pinia的简单使用

yarn add pinia
// 用来存储token,用户信息,等需要多地方使用的信息
src目录下新建store文件夹->新建index.ts

import { createPinia } from "pinia";const store = createPinia()export default store

main.ts 引用store

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'
const app = createApp(App)
app.use(store)
app.mount('#app')

获取与存储接口路由->新建base.ts

import axios from "axios";
import { defineStore } from "pinia";export const useBaseStore = defineStore({id:'baseConfig',state:()=>{return {axiosBaseUrl:'',}},actions:{getConfigJson() {return new Promise<any>((resolve,reject)=>{axios.get('../../public/serverconfig.json').then((result)=>{this.axiosBaseUrl = result.data.ApiUrlresolve(result.data)}).catch((error)=>{reject(error)})})}}
})

页面获取接口路由

<script setup lang="ts">
import { useBaseStore } from '../store/base';
const baseStore: any = useBaseStore
const baseApiUrl = baseStore.axiosBaseUrl
// 一般是手写接口,或者上传时候用到接口路由,其他情况用封装好的接口就可
</script>

保存用户信息以及taken store->新建userStore.ts

import { defineStore } from "pinia";
import { setToken } from "../utils/auth";export const useUserStore = defineStore('userStore',{state:()=>{return {userName:'',userId:'',token:'',}},actions:{async getUserInfo() {//useInfo已封装好的获取用户信息接口let res = await useInfo()if(res.result==1) {this.userId = res.data.userIdthis.userName = res.data.userName}return res},async userLogin(ruleForm:any){//login 已封装好的登录接口let res = await login({data:{Account:ruleForm.Account,Password:ruleForm.Password}})if(res.result==1) {this.token = res.data.tokensetToken(res.data.token)// setToken 保存token到浏览器里}return res}}
})

页面调用登录以及获取用户信息接口

<template><div><!-- pina --><el-button @click="login">登录</el-button><el-button @click="getInfo">获取用户详情</el-button></div>
</template>
<script setup lang="ts">
import { ElMessage, type FormInstance } from 'element-plus';
import { useUserStore } from '../store/userStore';
import { reactive, ref } from 'vue';
interface RuleForm {Account: stringPassword: string
}const ruleFormRef: any = ref<FormInstance>()
const ruleForm = reactive<RuleForm>({Account: '',Password: ''
})
const useStore: any = useUserStore
const login = async () => {let res = await useStore.userLogin(ruleForm)if (res.result == 1) {// 登录成功//登录成功之后保存数据和跳转到其他页面} else {// 登录失败ElMessage.error(res.error)}
}
const getInfo = async () => {let res = await useStore.getUserInfo()if (res.result == 1) {// 获取用户详情} else {ElMessage.error(res.error)}
}
</script>
http://www.xdnf.cn/news/7878.html

相关文章:

  • 家用和类似用途电器的安全 第1部分:通用要求 与2005版差异(7)
  • openlayer:12在某一区县内(一定区域内)加载不同类型的坐标位置,点击后弹出overlay弹窗显示坐标点详细信息,点击弹窗上关闭按钮关闭弹窗
  • 鸿蒙版Flutter库torch_light手电筒功能深度适配
  • 传统Spring MVC + RESTful 与 Vue3 结合 JWT Token 验证的示例
  • 143.重排链表的尝试
  • 数据库表关系详解
  • URL 类知识点详解
  • Python入门手册:正则表达式的学习
  • 代理IP在市场分析与用户画像研究中的应用解析
  • spring cloud alibaba-Geteway详解
  • 禁忌搜索算法:从原理到实战的全解析
  • 现代人工智能系统的实用设计模式
  • Science Advances | MIST:一种新型深度学习框架可解释的单细胞T细胞多组学整合分析工具
  • 基于Java( GUI )实现多人在线聊天软件
  • UE5.6新版本—— 动画光照系统重点更新
  • 3.2.3
  • SMT贴片工厂核心工艺与质量控制解析
  • LeetCode-链表-合并两个有序链表
  • GO语言学习(七)
  • 野火RK3588部署yolov8
  • 【notepad++如何设置成中文界面呢?】
  • 解决使用HBuilder X开发时uView组件不生效的问题
  • python爬虫和逆向:百度翻译数据采集的几种方式
  • Spring Boot AI 之 Chat Client API 使用大全
  • 前端面试题
  • C# AOP编程
  • 【亲测有效】Ubuntu22.04安装黑屏重启进入系统卡死
  • 如果有三个服务实例部署在三台不同的服务器上,这三个服务实例的本地缓存,是存储一模一样的数据?还是各自只存一部分?
  • 《易经》的数学表达:初级版和高级版
  • 回溯算法——排列篇