Pinia的介绍、使用及持久化

devtools/2024/12/22 13:08:51/

Pinia介绍

什么是Pinia?

Pinia 是 Vue 的最新 状态管理工具,状态就是数据。

通俗地讲:Pinia 是一个插件,可以帮我们管理 vue 通用的数据 (多组件共享的数据)。

比如一份数据有多个组件需要使用,在学Pinia之前我们需要用父子组件通信这样麻烦的方法,但是学习了Pinia之后,我们只需要把这些需要共享的数据扔进一个数据仓库,在需要使用这些共享数据的组件中导入这个数据仓库就可以了

使用场景

① 某个状态在很多个组件来使用 (比如个人信息)

② 多个组件共同维护一份数据

优势

① 共同维护一份数据,数据集中化管理

② 响应式变化

③ 操作简洁 (提供了一些辅助函数)

使用

在创建项目时,只要你在“是否引入Pinia用于状态管理”这一项中选择了“是”

那么创建的项目中就会有一个stores文件夹,并且里面有一个counter.ts文件,这个文件就是你的数据仓库

 

我们不妨先来看看counter.ts中的内容,counter.ts中非常友好地写了简单易懂的demo,红字是我对代码的标识,相信聪明的你们一看就懂

组件中使用仓库中的数据,看看下面的代码示例吧

javascript">// 导入 useCounterStore 方法
import { useCounterStore } from '@/stores/counter'
// 执行 useCounterStore 方法得到 counterStore对象,对象中存放了数据仓库中的数据
const counterStore = useCounterStore()
//使用仓库中的数据和方法
counterStore.increment()
const number = counterStore.count

持久化

有时我们希望仓库中的数据持久化存储在我们本地,这是就要引入持久化插件了

1、进入持久化插件网站:

快速开始 | pinia-plugin-persistedstate (prazdevs.github.io)

2、安装

pnpm i pinia-plugin-persistedstate

3、main.js 使用

在main.js(或main.ts,你懂的)中加入这三行代码

javascript">import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const pinia = createPinia()
app.use(pinia.use(piniaPluginPersistedstate))

4、在数据仓库中,将 persist 选项设置为 true

Vue2选项式语法

javascript">import { defineStore } from 'pinia'export const useStore = defineStore('main', {state: () => {return {someState: '你好 pinia',}},persist: true,
})

Vue3组合式语法

javascript">import { defineStore } from 'pinia'
import { ref } from 'vue'export const useStore = defineStore('main',() => {const someState = ref('你好 pinia')return { someState }},{persist: true,},
)

现在你的数据就已经是持久化的啦,写写代码测试一下效果吧!

 


http://www.ppmy.cn/devtools/46108.html

相关文章

WebSocket和HTTP协议对比

WebSocket和HTTP是两种不同的通信协议,它们在多个方面存在显著差异,主要区别包括: 通信模式: HTTP 是一种无状态的、基于请求-响应模型的协议。这意味着通信总是由客户端发起请求,服务器被动响应。每次请求和响应都是独…

JVM的相关知识

一.JVM内存区域划分(JVM是一个Java进程) 一个进程运行过程中就需要重操作系统这里申请到一些内存资源 JVM也是如此,搞一大块内存,供Java代码执行时使用 JVM把这一大块内存又划分成不同的区域,分别代表不同的用途 各个…

linux暴力破解漏洞利用

禁止非法操作,仅限参考 暴力破解 编辑密码本(vim password.txt)无声进入msf(msfconsole -q)搜索ssh_login相关程序(search ssh_login)设置攻击参数(use 0) 设置用户名&…

M-G364PD惯性测量单元:相机及微小层面的革命性应用

在现代科技飞速发展的今天,精准控制和精确测量是众多高端设备实现卓越性能的关键。爱普生推出的M-G364PD惯性测量单元(IMU),因其卓越的性能和微小尺寸,成为相机以及其他微小层面应用的理想选择,为科技创新提…

【源码】【SpringBoot】Web课程设计学生成绩管理系统的设计与开发

学生成绩管理系统 系统功能开发环境开发技术前端技术后端技术 系统展示登录界面学生身份登录教师身份登录 源码获取↓↓↓↓: 源码可在后台私信联系博主或文末添加博主微信获取帮助 系统功能 系统用户身份分为三类,学生、教师和辅导员。身份不同登陆后所…

如何优雅实现存算分离:缓存及Tablespace讲解与演示

在传统的紧耦合系统设计中,存储与计算密不可分,但随着业务的发展,常常会为了扩存储而带来额外的计算扩容,这其实就是一种浪费;同理,只为了提升计算能力,也会带来一段时期的存储浪费。存算分离的…

HElib 使用样例

参考文献: HElib:编译安装 文章目录 helib::BGV示例代码配置 & 编译测试结果生成密码参数 helib::BGV BGV 方案的 SIMD 技术, 模数 p ≥ 2 p\ge 2 p≥2,Hensel Lifting 指数 r ≥ 1 r \ge 1 r≥1,分圆环的次数…

Flutter 中的 SliverToBoxAdapter 小部件:全面指南

Flutter 中的 SliverToBoxAdapter 小部件:全面指南 Flutter 是一个流行的 UI 框架,它提供了多种灵活的组件来构建丰富和交互式的用户界面。在 Flutter 的滚动和布局组件中,SliverToBoxAdapter 是一个特殊的小部件,它允许将 BoxWi…