当前位置: 首页 > 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
    }
    );
    

相关文章:

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…...

3个秘籍解锁百度网盘提取码:告别繁琐搜索的智能解决方案

3个秘籍解锁百度网盘提取码:告别繁琐搜索的智能解决方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾在深夜急需下载学习资料,却被一个简单的提取码困住?或者在工作汇报前&#…...

3分钟极速指南:网易云音乐无损FLAC批量下载神器

3分钟极速指南:网易云音乐无损FLAC批量下载神器 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 还在为寻找高品质音乐资源而烦恼吗&#x…...

Sonixd多语言支持详解:国际化(i18n)实现原理和本地化最佳实践

Sonixd多语言支持详解:国际化(i18n)实现原理和本地化最佳实践 【免费下载链接】sonixd A full-featured Subsonic/Jellyfin compatible desktop music player 项目地址: https://gitcode.com/gh_mirrors/so/sonixd Sonixd是一款功能强大的桌面音乐播放器&…...

CANN/asc-devkit int8转int16 API

asc_int82int16 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

GitHub中文化插件终极实战指南:5分钟实现高效中文开发体验

GitHub中文化插件终极实战指南:5分钟实现高效中文开发体验 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub作为全球…...

向华为学习——解读华为流程型组织的基石:业务流架构(BPA)全景解析【附全文阅读】

华为流程型组织 BPA 业务流架构|推介总结 适应人群:企业高管、战略与变革负责人、流程与运营总监、组织与 HR 管理者、数字化与 IT 架构师、咨询顾问。 重要性总结:本文档是华为流程型组织建设的核心方法论,系统解析 BPA 业务流架构全景,明确战略驱动、业务本质、责任落地…...

ACL 2026 | 未见伪造也能识别:「证链侦探」破解“泛化失灵”困局

AI 生成图像、AI 编造文本、图文协同伪造……今天的多模态虚假内容,已经越来越复杂。面对训练中没见过的新新闻域、新操纵方式、新组合套路,很多现有鉴伪模型往往就开始“掉链子”。问题的关键不只是伪造更多了,而是模型学到的东西太像“背答…...

ASL1架构规范语言:Arm处理器设计的核心工具

1. ASL1架构规范语言概述ASL1(Architecture Specification Language)是Arm公司专为处理器架构设计开发的领域特定语言(DSL),主要用于精确描述Arm架构参考手册中的指令集行为。这种语言在2025年发布的A-profile架构参考…...

【日常小问】解决 Jenkins 部署 Spring Cloud 微服务到 Docker 容器启动失败的问题

一、问题出现在使用 Jenkins 进行 CI/CD 部署 Spring Cloud 微服务项目时,遇到了一个让人头疼的问题:所有通过 Jenkins 构建的 Docker 容器启动后立即退出,状态码为 Exited (1)。查看容器日志,报错信息如下:**********…...

基于RAG的AI知识库构建:从原理到工程实践

1. 项目概述:一个面向AI的知识库构建方案最近在折腾AI应用开发的朋友,估计都绕不开一个核心问题:如何让大语言模型(LLM)更精准、更可靠地使用你自己的数据?无论是想打造一个能回答公司内部文档问题的智能客…...