Vue.js 状态管理库Pinia
Pinia
- Pinia :Vue.js 状态管理库
- Pinia持久化插件-persist
Pinia :Vue.js 状态管理库
Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。
- 要使用Pinia ,先要安装npm install pinia

- 在main.js中导入Pinia 并使用

示例代码: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') - 在src目录下,创建stores文件夹,并创建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}}); - 在组件中使用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中的数据持久化的存储
-
要使用persist,首先安装persist:npm install pinia-persistedstate-plugin

-
在Pinia中使用persist
- 先在main.js里导入persist的createPersistedState函数

示例代码:
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') - 先在main.js里导入persist的createPersistedState函数
-
定义状态Store时,指定持久化配置参数。
在stores文件夹的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 } );
相关文章:
Vue.js 状态管理库Pinia
Pinia Pinia :Vue.js 状态管理库Pinia持久化插件-persist Pinia :Vue.js 状态管理库 Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。 要使用Pinia ,先要安装npm install pinia在main.js中导入Pinia 并使用 示例…...
【Stable Diffusion部署至GNU/Linux】安装流程
以下是安装Stable Diffusion的步骤,以Ubuntu 22.04 LTS为例子。 显卡与计算架构介绍 CUDA是NVIDIA GPU的专用并行计算架构 技术层级说明CUDA Toolkit提供GPU编译器(nvcc)、数学库(cuBLAS)等开发工具cuDNN深度神经网络加速库(需单独下载)GPU驱动包含CUDA Driver(需与CUDA …...
【C/C++算法】从浅到深学习---滑动窗口(图文兼备 + 源码详解)
绪论:冲击蓝桥杯一起加油!! 每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章是算法训练的第二章----滑动窗口,它的本质是双指针算法的衍生所以我将…...
计算机毕业设计SpringBoot+Vue.js房源推荐系统 房价预测 房源大数据分析可视化(源码+文档+运行视频+讲解视频)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
开源机器人+具身智能 解决方案+AI
开源机器人、具身智能(Embodied Intelligence)以及AI技术的结合,可以为机器人领域带来全新的解决方案。以下是这一结合的可能方向和具体方案: 1. 开源机器人平台 开源机器人平台为开发者提供了灵活的基础架构,可以在此基础上结合具身智能和AI技术。以下是一些常用的开源机…...
通过 VBA 在 Excel 中自动提取拼音首字母
在excel里面把表格里的中文提取拼音大写缩写怎么弄 在Excel中,如果你想提取表格中的中文字符并转换为拼音大写缩写(即每个汉字的拼音首字母的大写形式),可以通过以下步骤来实现。这项工作可以分为两个主要部分: 提取拼…...
华硕笔记本怎么一键恢复出厂系统_华硕笔记本一键恢复出厂系统教程
华硕笔记本怎么一键恢复出厂系统? 华硕一键恢复出厂系统是一个安全、高效、方便的恢复方式,让您轻松还原出厂设置,以获得更好的系统性能。如果您的华硕电脑遇到问题,可以使用华硕一键恢复出厂系统功能。下面小编就教大家华硕笔记本…...
Ubuntu 如何安装Snipaste截图软件
在Ubuntu上安装Snipaste-2.10.5-x86_64.AppImage的步骤如下: 1. 下载Snipaste AppImage 首先,从Snipaste的官方网站或GitHub Releases页面下载Snipaste-2.10.5-x86_64.AppImage文件。 2. 赋予执行权限 下载完成后,打开终端并导航到文件所在…...
【离散数学上机】T235,T236
T235题目:输入集合A和B,输出A到B上的所有单射函数。 问题描述 给定非空数字集合A和B,求出集合A到集合B上的所有单射函数。 输入格式 第一行输入m和n(空格间隔),分别为集合A和集合B中的元素个数;…...
【Android开发】安卓手机APP使用机器学习进行QR二维码识别(完整工程资料源码)
前言:本项目是一个 Android 平台的二维码扫描应用,具备二维码扫描和信息展示功能。借助 AndroidX CameraX 库实现相机的预览、图像捕获与分析,使用 Google ML Kit 进行二维码识别。为方便大家了解项目全貌,以下将介绍项目核心代码文件 MainActivity.java 和 AndroidManifes…...
【油猴脚本/Tampermonkey】DeepSeek 服务器繁忙无限重试(20250214优化)
目录 一、 引言 二、 逻辑 三、 源代码 四、 添加新脚本 五、 使用 六、 BUG 七、 优化日志 1.获取最后消息内容报错 2.对话框切换无法正常使用 一、 引言 deepseek演都不演了,每次第一次提问就正常,后面就开始繁忙了,有一点阴招全…...
为deepseek搭建本地页面
搭建页面的框架多种多样,例如python中的flask、django等,再如java中的spring框架等等。你使用什么语言、什么框架都无所谓,重要的是设计思路。这里UP以node.js中的express框架为例来为deepseek搭建一个本地页面。 一、ollama的下载、安装和加载 deepseek本地部署-CSDN博客…...
详解df -h命令
df -h 是 Linux 中用于查看文件系统磁盘空间使用情况的命令。以下是详细说明: 命令格式 df -h 选项说明 -h:以易读格式(如 KB、MB、GB)显示磁盘空间。 输出字段 Filesystem:文件系统的设备名或挂载点。 Size&…...
虚拟环境测试部署应用
一、作用 虚拟环境(env)在计算机领域,特别是在软件开发和测试中扮演着重要角色。它主要用于创建一个隔离的环境,使得开发者可以在不影响系统其余部分的情况下安装、配置和运行软件项目。以下是虚拟环境的一些主要作用: 1、依赖管理 不同的项目可能需要不同版本的库或框…...
CentOS本机配置为时间源
CentOS本机配置为时间源 安装chrony,默认已安装修改配置文件 /etc/chrony.conf客户端配置 安装chrony,默认已安装 yum -y install chrony修改配置文件 /etc/chrony.conf # cat /etc/chrony.conf | grep -Ev "^$|#" server ceph00 iburst dri…...
蓝桥杯备赛 Day14 素数环
信息学奥赛一本通(C版)在线评测系统 【题目描述】 输入正整数nn,把整数11,22,…,nn 组成一个环,使得相邻两个整数之和均为素数。 【输入】 输入正整数nn。 【输出】 输出任意一个满足条件的环。 【输入样例】 6 【输出样例】 …...
小程序canvas2d实现横版全屏和竖版逐字的签名组件(字帖式米字格签名组件)
文章标题 01 功能说明02 效果预览2.1 横版2.2 竖版 03 使用方式04 横向签名组件源码4.1 html 代码4.2 业务 Js4.3 样式 Css 05 竖向签名组件源码5.1 布局 Html5.2 业务 Js5.3 样式 Css 01 功能说明 技术栈:uniapp、vue、canvas 2d 需求: 实现横版的全…...
haproxy详解笔记
一、概述 HAProxy(High Availability Proxy)是一款开源的高性能 TCP/HTTP 负载均衡器和代理服务器,用于将大量并发连接分发到多个服务器上,从而提高系统的可用性和负载能力。它支持多种负载均衡算法,能够根据服务器的…...
SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析
摘要 在探讨SpringCloud框架中的两种注册中心之前,有必要回顾单体架构与分布式架构的特点。单体架构将所有业务功能集成在一个项目中,优点是架构简单、部署成本低,但耦合度高。分布式架构则根据业务功能对系统进行拆分,每个模块作…...
前端调用串口通信
项目录结构 node项目 1) 安装serialport npm install serialport 2)编写index.js 1 const SerialPort require(serialport); 2 var senddata [0x02];//串口索要发送的数据源 3 var port new SerialPort(COM3);//连接串口COM3 4 port.on(open, fun…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
