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

Vue.js 状态管理库Pinia

Pinia

    • Pinia :Vue.js 状态管理库
    • Pinia持久化插件-persist

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 = () => {//先获取tokenconst tokenStore = useTokenStore();//在pinia中定义的响应式数据,都不需要.value,这里直接传token这个参数就行return request.get('/category',{headers:{'Authorization':tokenStore.token}})  
    }
    

Pinia持久化插件-persist

  • Pinia默认是内存存储,当刷新浏览器时,会丢失数据。
  • Persist插件可以将pinia中的数据持久化的存储
  1. 要使用persist,首先安装persist:npm install pinia-persistedstate-plugin
    npm install pinia-persistedstate-plugin

  2. 在Pinia中使用persist

    • 先在main.js里导入persistcreatePersistedState函数
      在这里插入图片描述
      示例代码:
    import './assets/main.scss'import { createApp } from 'vue'
    import ElementPlus from 'element-plus'
    import 'element-plus/dist/index.css'
    import router from '@/router'
    import App from './App.vue'
    import { createPinia } from 'pinia'
    //导入 persist 的 createPersistedState函数
    import { createPersistedState } from 'pinia-persistedstate-plugin'const app = createApp(App);
    const pinia = createPinia();//创建一个 persit 实例
    const persist = createPersistedState();
    //在 pinia 中,使用 persist
    pinia.use(persist);app.use(pinia);
    app.use(router);
    app.use(ElementPlus);
    app.mount('#app')
    
  3. 定义状态Store时,指定持久化配置参数。
    在stores文件夹的token.js中,指定持久化存储。
    token.js

    示例代码:

    import {defineStore} from 'pinia';
    import {ref} from 'vue';export const useTokenStore = defineStore('token', ()=>{const token = ref('')const setToken = (newToken) => {token.value = newToken;}const removeToken = () => {token.value = '';}return {token,setToken,removeToken}
    },
    {//持久化存储persit:true
    }
    );
    

http://www.mrgr.cn/news/90231.html

相关文章:

  • 阿里云百炼初探DeepSeek模型调用
  • HTML之JavaScript运算符
  • 公司配置内网穿透方法笔记(二):FTP内网穿透方法
  • html文件怎么转换成pdf文件,2025最新教程
  • Windows 系统下使用 Ollama 离线部署 DeepSeek - R1 模型指南
  • (1/100)每日小游戏平台系列
  • C++类和对象进阶:构造函数和析构函数详解
  • linux部署node服务
  • 使用ThreeJS实现的宇宙大爆炸3D粒子特效思路,原理和关键代码解析
  • 达梦数据库(DM)线程管理
  • 【Java】多线程和高并发编程(三):锁(中)深入ReentrantLock
  • C++ STL汇总
  • C++智能指针的使用
  • 移动(新)魔百盒刷机教程[M301A_YS]
  • SpringSecurity:授权服务器与客户端应用(入门案例)
  • 9 数据流图
  • Linux: ASoC 声卡硬件参数的设置过程简析
  • KITE提示词框架:引导大语言模型的高效新工具
  • 【故障处理】 - 12C ADG备库密码文件的MD5值不断变化
  • 51c自动驾驶~合集49
  • 2.10..
  • c# http
  • 【CXX-Qt】2 CXX-Qt #[cxx_qt::bridge] 宏指南
  • react redux用法学习
  • 【UVM】寄存器模型
  • DeepSeek-R1:通过纯强化学习提升大模型推理能力,对于真正的强 AI (AGI/ASI),要放弃人类评审,让TA学会自我评估与博弈