Pinia+Vue3使用案例及Pinia持久化存储

Pinia使用方法及持久化存储 Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态。它跟Vuex有一定的相似度,但还是有很大的区别。愿意看这篇博客的人,想必已经看过了官方文档,官方文档很详细,包含各种使用情景和理论,因此本文不说理论,只说具体的使用方法,想深入研究的建议去看官方文档,本文适合拿来即用。Pinia 官方文档。 阅读详情

为什么要使用Pinia

Pinia是Vue的一个存储库,它允许你跨组件/页面共享状态。 如果你熟悉Composition API,你可能会认为你已经可以通过一个简单的导出const state = reactive({})来共享一个全局状态。 这对于单页应用程序是正确的,但如果是服务器端呈现,则会暴露应用程序的安全漏洞。 但即使是在小的单页应用程序中,你也可以通过使用Pinia获得很多:

  • 热模块替换
  • 修改存储而无需重新加载页面
  • 在开发过程中保持任何现有状态
  • 使用插件扩展Pinia功能
  • 为JS用户提供正确的TypeScript支持或自动补全
  • 服务器端渲染支持

安装

 npm install pinia

配置

新建sotre仓库
index.ts
import type { App } from "vue";
import { createPinia } from "pinia";

const store = createPinia();

export function setupStore(app: App<Element>) {
  app.use(store);
}

export { store };

以premession.ts模块为例
import { defineStore } from "pinia";
import { store } from "../index";

export const usePermissionStore = defineStore({
  id: "pure-permission",
  state: () => ({
    // 静态路由生成的菜单
    name: "permission",
    linkId: 0,
    // 整体路由生成的菜单(静态、动态)
    wholeMenus: [],
    // 深拷贝一个菜单树,与导航菜单不突出
    menusTree: [],
    buttonAuth: [],
    // 缓存页面keepAlive
    cachePageList: [],
  }),
  actions: {},
});

export function usePermissionStoreHook() {
  return usePermissionStore(store);
}

main.ts引入store

在这里插入图片描述

使用案例

<template>
  <div class="RelationGraph">
    <div>{{ num }}</div>
    <div class="addNum"></div>
    <el-button color="#626aef" @click="clickHandler">Default</el-button>
  </div>
</template>

<script lang="ts" setup>
import { ElButton } from "element-plus";
import { usePermissionStoreHook } from "../../store/modules/premession";
import { ref } from "vue";
const num = ref<number>(0);
const clickHandler = () => {
  num.value++;
  usePermissionStoreHook().$state.linkId = num.value;
  console.log(
    "store:",
    usePermissionStoreHook().$state.linkId,
    "num:",
    num.value
  );
};
</script>

<style scoped lang="less">
.RelationGraph {
  padding-top: 160px;
}
</style>

页面刷新后,数据会重置,安装类似vuex- persistdstate的pinia插件解决。

存储状态并持久化存储

安装 pinia-persistedstate-plugin
npm install pinia-persistedstate-plugin
store>index.ts
import type { App } from "vue";
import { createPinia } from "pinia";

import { createPersistedState } from "pinia-persistedstate-plugin";
const store = createPinia();
store.use(createPersistedState());
export function setupStore(app: App<Element>) {
  app.use(store);
}

export { store };

二次刷新,数据用以持久化存储。

Vue3中的pinia使用(收藏版) pinia官方文档Pinia 的优点更多查看文档… 在main.js中引入pinia并创建容器挂载到根实例上 创建stores文件夹和index.js文件(这个文件以后基本不用管了) 在stores文件夹下创建counter.js文件。这个文件就是存有关counter相关的数据。(类似vuex的模块化) defineStore 是需要传参数的, 然后再组件中使用: 运行效果: 可以用vue3的调试工具看pinia案例需求,点击按钮加一: 一个不解构,一个不解构看看区别。 运行结 阅读详情

相关推荐

vue3使用 Pinia及 Pinia数据持久化存储

src目录下新建store文件夹,创建user.ts文件并写入Store 是用 defineStore() 定义的,它的第一个参数要求是一个独一无二的名字,defineStore() 的第二个参数可接受两类值:Setup 函数或 Option 对象。state 属性: 用来存储全局的状态的,这里边定义的,就可以是为SPA里全局的状态了。getters属性:用来监视或者说是计算状态的变化的,有缓存的功能。actions属性:对state里数据变化的业务逻辑,需求不同,编写逻辑不同。

JavaScritp 1928

快速搞懂Pinia及数据持久化存储(详细教程)

简单搞懂Pinia的使用及使用pinia-plugin-persist插件实现数据持久化存储

Ghmin的博客 2万+

Vue3多页面应用中的Pinia状态共享:跨页面数据同步的实战解析

本文深入解析了Vue3多页面应用中Pinia状态共享的实战方案,解决了跨页面数据同步的痛点。通过单例模式、本地持久化存储和BroadcastChannel API三种方案对比,结合电商购物车案例,详细展示了如何实现高效的状态管理,提升多页面应用的用户体验。

weixin_29010003的博客 376

Pinia安装使用和持久化和模块化

/ 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`,`useCartStore`,`useProductStore`)// 第一个参数是你的应用中 Store 的唯一 ID。// 其他配置...})这个名字 ,也被用作 id ,是必须传入的, Pinia 将用它来连接 store 和 devtools。

前端工程师 · Vue 生态深耕者,专注多端与工程化 1万+

Vue3从入门到精通进阶核心篇:Pinia状态管理入门与实战—— 替代 Vuex 的 Pinia 使用教程,从安装配置到核心用法,实战实现全局状态管理(登录状态、主题切换)

本文介绍Vue3推荐的状态管理工具Pinia,相比Vuex具有语法简洁、适配Composition API、支持TS等优势。文章从Pinia核心概念入手,详细讲解安装配置、Store创建及组件使用方法,通过计数器示例展示state、getters和actions的用法。Pinia简化了全局状态管理流程,是Vue3项目的首选方案。

不定期发布一些开发小知识 249

医学图像中的小目标病灶检测难题:我的硕士研究总结与思考

医学图像中的小目标检测和分割,主要指在CT、MRI、超声等医学影像中识别和分割微小病灶或细小结构。这些小目标通常体积小、边界模糊、特征不明显,却往往是关键病灶,例如肺部小结节、脑微出血、乳腺微钙化等。

weixin_45638136的博客 2370

Vue3 pinia持久化存储(组合式Api案例演示)

pinia-plugin-persist( pinia持久化插件) 持久化存储: 一、为什么要进行数据持久化存储 二、pinia-plugin-persist使用步骤如下 1.引入库 代码如下: 安装结果如下图所示: 2.在Pinia上注册pinia-plugin-persist插件 代码如下 如下图所示(操作解释) 3.声明测试store(组合式Api) 组合式声明Store文章(不会组合式Api的同学点👇🔗) 代码如下: 如下图所示(代码解释): 4.测试pinia数据持久化 代码如下 1.Vue3

weixin_46022934的博客 7944

Ubuntu22.04下,用Fast-LIVO2+3DGS重建桌面小物件:从点云到高清模型的保姆级避坑实录

本文详细介绍了在Ubuntu22.04环境下,使用Fast-LIVO2与3DGS技术进行桌面小物件三维重建的完整流程。从环境配置、数据采集到点云-图像对齐和3DGS训练,提供了针对小物件优化的参数设置和避坑指南,帮助用户实现媲美商业扫描仪的高清模型重建效果。

weixin_30897233的博客 399

Vue3、Vite、Pinia基础学习

Vue3、Vite、Pinia基础学习,本次学习是跟着邓瑞编程b站视频进行学习的。

qq_63898506的博客 1999

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化)

本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。

weixin_29289821的博客 295

【AI Agent系列】【阿里AgentScope框架】深入源码:Msg是如何转变成模型需要的Prompt形式的?多模态Prompt如何构建?

前面咱们学习AgentScope,在使用Agent来对话时,输入为一个 Msg 对象,不能是字符串,然后在Agent内部,会将Msg对象转换为模型接受的Prompt。那 AgentScope 如何根据 Msg 形成相应模型接收的Prompt结构的?如何使用 Msg 带入更多的参数,传递给大模型呢?

同学小张的博客 1534

Pinia的简单使用

官网: https://pinia.vuejs.org/这个入门写的很清楚: https://pinia.vuejs.org/getting-started.html#what-is-a-store 2:安装pinia 3: 使用 1:在./store/index.ts中注册 1.在mian.ts中引入 2.在src目录下创建store文件夹,然后创建/modules/router.ts文件 3:在组件中使用pinia的数据可以直接使用.........

达拉崩巴斑得贝迪卜多比鲁翁_ 1344

第 1 章 Prometheus 监控 | Prometheus 入门

了解 Prometheus 监控系统,学会安装及了解页面功能。

甘蓝的专栏 486

Vue3快速入门

Vue3快速编程

AdrianAndroid的专栏 2777

【数据分享】1985-2023 年中国 30m 生长季 NDVI 数据集:刘小平团队力作,Landsat 无缝融合无云产品

中山大学刘小平团队发布1985-2023年中国30m分辨率生长季Landsat NDVI数据集,解决了传统数据的三大痛点:无缝拼接、时间连续和质量可靠。该数据集基于5-9月生长季Landsat影像,通过云检测、多景融合等技术生成,已在GEE平台开放共享。其高分辨率、长时序特性为植被动态监测、LUCC研究等提供重要支撑,在农业、生态保护等领域具有广泛应用价值。

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 1509

华为面试手撕真题【最长不重复子串】

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。

MISAYAONE的博客 1万+

Pinia 完全指南:用 TypeScript 构建可维护、可测试、可持久化的 Vue 3 状态管理

本文深入讲解Pinia 2.2状态管理库的核心特性与实战应用。Pinia作为Vue3官方推荐的状态管理方案,具有组合式API风格、原生TypeScript支持、轻量高效等优势。文章详细介绍了Store定义、模块化组织、类型安全、持久化存储等核心概念,并通过用户认证系统、购物车、主题配置三大实战项目,演示了如何在实际业务中应用Pinia。同时提供了性能优化技巧、插件开发方法、单元测试指南以及与Vuex的对比分析,帮助开发者构建健壮、可维护的Vue应用。全文配有完整代码示例,是掌握现代Vue状态管理的实用指南。

小二丶的博客 1253

Python 爬虫实战:微博自动化运营工具(点赞 / 转发 / 评论 + 反封号策略)

微博作为中国最大的社交媒体平台之一,拥有庞大的用户群体和丰富的数据资源。通过 Python 爬虫技术,我们可以实现微博的自动化运营,包括点赞、转发、评论等功能,同时采取有效的反封号策略,确保账号的安全和稳定运行。

u014481728的博客 1178

Vue3极简手册

本文介绍了Vue3的快速入门方法,对比了传统开发方式和模块化开发的差异,并重点讲解了ref和reactive的使用区别。主要内容包括:1)传统开发方式通过script标签直接引入Vue,而模块化开发使用import语法;2)模块化开发需要本地服务器支持以避免跨域问题;3)ref和reactive的区别:ref支持基本类型和对象类型,传入对象时会自动调用reactive转为响应式对象,而reactive仅支持对象类型;4)通过代码示例演示了响应式数据的声明和使用;5)介绍了v-on事件绑定和按键修饰符的应用。

lf_1234的博客 713

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Vue3如何使用Pinia详细介绍、pinia持久化存储(pinia-plugin-persistedstate详细配置)

1、在stores文件夹下创建一个store ,名为user.js ,命名是尽量是见名知意的。2、定义user.jsStore 是使用定义的,并且它需要一个唯一名称,作为第一个参数传递这个name,也称为id,是必要的,Pinia 使用它来将 store 连接到 devtools。将返回的函数命名为use...是跨可组合项的约定// defineStore('userInfo',{}) userInfo就是这个仓库的名称nameusername: '赫赫',age: 30,hobby: [

H524268015wsw的博客 6万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【VUE】Vue3项目中Pinia状态管理工具的使用

官网介绍说:Pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。的方式是经过优化的,会加快修改速度,对程序的性能有很大的好处。虽然可以直接修改,但是出于代码结构来说, 全局的状态管理还是不要直接在各个组件处随意修改状态,应放于。方法的第二个参数:配置对象,放置state,getters,actions。属性: 修改state全局状态数据,可以是异步也可以是同步。方法的第一个参数:容器的名字,名字必须唯一,不能重复。属性: 用来监视或者说是计算状态的变化的,有缓存的功能。

编码世界 7223

uni-app 从vue3项目创建到Pinia管理数据全局使用 持久化存储数据 详细教程

这是一个vue3配合pinia的详细教程 这里面的安装插件 尽量使用 yarn进行安装;persist有两种用法,如果persist: true 是存储全部的内容 ,把true换为paths: ['count'], 可以指定存储的数据

qq_52602294的博客 6577

Vue3中的pinia使用,持久化(经典收藏版)

Pinia 官方中文文档pinia 是 Vue 的存储库,它允许您跨组件/页面共享状态。就是和vuex一样的实现数据共享。依据Pinia官方文档,Pinia是2019年由vue.js官方成员重新设计的新一代状态管理器,更替Vuex4成为Vuex5。Pinia目前也已经是 vue 官方正式的状态库。适用于 vue2 和 vue3。可以简单的理解成 Pinia 就是 Vuex5。也就是说, Vue3项目,建议使用Pinia。

weixin_43617604的博客 6649

Pinia状态管理工具:【Vue3 + Pinia使用】 安装Pinia && Pinia基本使用 && 创建 store仓库 && Pinia持久化存储 && 配置本地存储 && 指定仓库数据存储

Pinia状态管理工具:【Vue3 + Pinia使用】 安装Pinia && Pinia基本使用 && 创建 store仓库 && Pinia持久化存储 && 配置本地存储 && 指定仓库数据存储

Forever_Hopeful的博客 4012

Vue3 Pinia持久化存储

在定义Pinia store时,可以通过persist选项来启用持久化功能。count: 0,}),actions: {},},persist: true, // 启用持久化});在这个示例中,选项启用了持久化功能,默认情况下,状态将被保存到中。通过使用Pinia和插件,我们可以轻松地在Vue 3中实现状态的持久化存储。这种方法不仅简化了状态管理的复杂性,还提高了应用的用户体验,使得用户在刷新页面或关闭浏览器后仍然能够恢复之前的状态。

ning的博客 1681
上一篇: Vue3.x&Vite2.0简易版打包优化
下一篇: 重温Javascript八股文 -—call,bind,apply以及 this的指向
Boriska1996
博客等级 码龄7年 22粉丝 77原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值