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

Vue.js 状态管理库Pinia

Pinia :Vue.js 状态管理库
Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。

  1. 要使用Pinia ,先要安装npm install pinia在这里插入图片描述
  2. main.js中导入Pinia 并使用
    main.js
    示例代码:
    import './assets/main.scss'
    
    import { createApp } from 'vue'
    import ElementPlus from 'element-plus'
    //导入 element-plus 的样式
    import 'element-plus/dist/index.css'
    import router from '@/router'
    import App from './App.vue'
    //导入 createPinia
    import { createPinia } from 'pinia'
    
    
    const app = createApp(App);
    //创建一个 pinia 实例
    const pinia = createPinia();
    //使用 pinia
    app.use(pinia);
    
    app.use(router);
    app.use(ElementPlus);
    app.mount('#app')
    
  3. src目录下,创建stores文件夹,并创建token.js文件。
    token.js
    示例代码:
    //定义 store
    import {defineStore} from 'pinia';
    import {ref} from 'vue';
    /*
        第一个参数:名字,唯一性
        第二个参数:函数,函数的内部可以定义状态的所有内容
    
        返回值:函数
    */ 
    export const useTokenStore = defineStore('token', ()=>{
        //定义状态内容
    
        //1.响应式变量
        const token = ref('')
    
        //2.定义一个修改token的函数,用来修改token的值
        const setToken = (newToken) => {
            token.value = newToken;
        }
    
        //3.定义一个移除token值的函数
        const removeToken = () => {
            token.value = '';
        }
    
        return {
            token,setToken,removeToken
        }
    
    });
    
  4. 在组件中使用Pinia,即使用刚才创建的useTokenStore
    用Pinia是为了存储token,并在多个组件中使用这个token。
  • 首先,登录成功后,会得到一个token,把该token存储到Pinia

    示例代码:

    //导入 有Pinia函数的token.js文件
    import { useTokenStore } from '@/stores/token'
    const tokenStore = useTokenStore();
    
    //登录函数
    const login = async () => {
        //调用接口,完成登录
        let result = await userLoginService(registerData.value);
        //alert(result.msg ? result.msg : '登录成功');
        ElMessage.success(result.msg ? result.mag : '登录成功');
    
        //把得到的token存储到pinia中
        tokenStore.setToken(result.data);
    
        //跳转到首页,使用useRouter切换组件,完成跳转
        router.push('/');
    }
    
  • 在调用后端接口的js文件中,发送请求前,先获取Pinia里的token,
    发送请求时,把token这个参数传给后端就行了。

    示例代码:

    //导入请求工具request.js,就相当于可以直接使用请求工具里的axios了
    import request from '@/utils/request.js'
    //导入前边创建的带Pinia的token.js文件
    import { useTokenStore } from '@/stores/token.js'
    
    //调用后端接口的函数
    export const articleCategoryListService = () => {
        //先获取token
        const tokenStore = useTokenStore();
    
        //在pinia中定义的响应式数据,都不需要.value,这里直接传token这个参数就行
        return request.get('/category',{headers:{'Authorization':tokenStore.token}})  
    }
    

http://www.kler.cn/a/540362.html

相关文章:

  • DeepSeek本地部署详细指南
  • [创业之路-289]:《产品开发管理-方法.流程.工具 》-15- 需求管理 - 第1步:原始需求收集
  • Kafka 的消费offset原来是使用ZK管理,现在新版本是怎么管理的?
  • 【批量获取图片信息】批量获取图片尺寸、海拔、分辨率、GPS经纬度、面积、位深度、等图片属性里的详细信息,提取出来后导出表格,基于WPF的详细解决方案
  • Flink 内存模型各部分大小计算公式
  • 2.1 Mockito核心API详解
  • 关于SoC产品介绍:ICNM8501
  • Day82:创建图形界面(GUI)
  • IntelliJ IDEA使用经验(十三):使用Git克隆github的开源项目
  • 【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践
  • Maven 在 Eclipse 中的使用指南
  • 机器学习中过拟合和欠拟合问题处理方法总结
  • 【Linux系统】—— 简易进度条的实现
  • Mac重复文件,一键查找并清理的工具
  • 如何把邮件批量导出到本地
  • iOS主要知识点梳理回顾-3-运行时
  • SpringCloud面试题----.Ribbon和Feign调用服务的区别
  • PDF翻译自动化:利用Make打造反思翻译工作流
  • Blazor-<select>
  • 六年级写景作文:美丽的春天
  • 重庆市大数据局:基于可信数据空间的公共数据流通利用(附下载)
  • Lua限流器的3种写法
  • 碳纤维复合材料制造的六西格玛管理实践:破解高端制造良率困局的实战密码
  • 动量+均线组合策略关键点
  • 后端开发ThreadLocal简介
  • LeetCode 热题 100 | 链表