Vue3状态管理之Pinia怎么使用
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要介绍"Vue3状态管理之Pinia怎么使用",在日常操作中,相信很多人在Vue3状态管理之Pinia怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"V
千家信息网最后更新 2025年11月10日Vue3状态管理之Pinia怎么使用
这篇文章主要介绍"Vue3状态管理之Pinia怎么使用",在日常操作中,相信很多人在Vue3状态管理之Pinia怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Vue3状态管理之Pinia怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Vue3 新的发展方向(来源于尤大知乎)
Vue 3 将在 2022 年 2 月 7 日 成为新的默认版本
基于 Vite 的极速构建工具链
2.2 state 中数据的解构访问
状态管理中
// store/index.tsstate:()=>{ return { info:"pinia 可以使用", count:10 } },组件中
{{ mainStore.count }}
{{ mainStore.info }}
{{ count }}
{{ info }}
2.3 state 中数据的修改方式(actions和组件中)
一般的修改
const alertData = () => { // 方式一:最简单的方法,如下 // 解构后更改方式 // count.value += 10 // 结构前更改方式 // mainStore.count += 10 // 方式二:若要同时修改多个数据,建议使用$patch来实现批量更新,在内部做了优化 // mainStore.$patch({ // count: mainStore.count + 1, // info: "hello" // }) // 方式三:更好的批量更新方法,通过$patch传递一个函数来实现,这里的state就是useMainStore容器中的state mainStore.$patch(state => { state.count += 10 state.info = "pinia批量更新" })}通过actions修改
// store/index.ts// 类似于vue2组件的methods,用于封装业务逻辑,修改state// // 注意:不能使用箭头函数来定义actions,因为箭头函数绑定外部的this actions:{ changeState (){ this.count += 10 this.info = "actions修改数据" }, changeStates (num:number){ this.count += num + 2 this.info = "actions修改数据" } }const alertData = () => { // 方式一:最简单的方法,如下 // 解构后更改方式 // count.value += 10 // 结构前更改方式 // mainStore.count += 10 // 方式二:若要同时修改多个数据,建议使用$patch来实现批量更新,在内部做了优化 // mainStore.$patch({ // count: mainStore.count + 1, // info: "hello" // }) // 方式三:更好的批量更新方法,通过$patch传递一个函数来实现,这里的state就是useMainStore容器中的state // mainStore.$patch(state => { // state.count += 10 // state.info = "pinia批量更新" // }) // 方式四:通过 actions 来修改数据 mainStore.changeState() mainStore.changeStates(10)}2.4 getters 的使用
定义
// 类似于组件的computed,用来封装计算属性,具有缓存的功能 getters:{ // 函数接收一个可选参数:state状态对象 count10(state){ return state.count += 10 }, count10(state){ return this.count += 10 }, // 若使用this.count,则必须指明返回数据的类型 count11():number{ return this.count += 11 } },使用
{{ mainStore.count10 }}
三、Pinia 数据持久化
保存至localStorage中
import { defineStore } from 'pinia';const useLoginStore = defineStore({ id: 'login', // state: () => ({ // num: 1, // }), state: () => ({ info: 'pinia 可以使用', }), getters: {}, actions: { alertInfo() { this.info = '可以可以,这个秒'; }, },});// 数据持久化// 1. 保存数据const instance = useLoginStore();instance.$subscribe((_, state) => { localStorage.setItem('login-store', JSON.stringify({ ...state }));});// 2. 获取保存的数据,先判断有无,无则用先前的const old = localStorage.getItem('login-store');if (old) { instance.$state = JSON.parse(old);}export default useLoginStore;使用 插件 pinia-plugin-persist 可以辅助实现数据持久化功能
# 安装插件pnpm install pinia-plugin-persist --save
// main.ts文件中import { createPinia } from 'pinia';import { createApp } from 'vue';import App from './App.vue';import router from './router';import piniaPluginPersist from 'pinia-plugin-persist';const pinia = createPinia();pinia.use(piniaPluginPersist);const app = createApp(App);app.use(router);app.use(pinia);app.mount('#app');// 接着在对应的 store 里开启 persist 即可。数据默认存在 sessionStorage 里,并且会以 store 的 id 作为 key。import { defineStore } from 'pinia';import piniaPluginPersist from 'pinia-plugin-persist';const useLoginStore = defineStore({ id: 'login', // state: () => ({ // num: 1, // }), state: () => ({ info: 'pinia 可以使用', }), // 开启数据缓存 persist: { enabled: true, }, getters: {}, actions: { alertInfo() { this.info = '可以可以,这个秒'; }, },});export default useLoginStore;其它设置,自定义保存名称,保存位置和需要保存的数据
// 开启数据缓存 persist: { enabled: true, strategies: [ { // 自定义名称 key: 'login_store', // 保存位置,默认保存在sessionStorage storage: localStorage, // 指定要持久化的数据,默认所有 state 都会进行缓存,你可以通过 paths 指定要持久化的字段,其他的则不会进行持久化。 paths: ['age'], }, ], },到此,关于"Vue3状态管理之Pinia怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
数据
方式
状态
组件
容器
函数
管理
文件
方法
更新
实例
缓存
支持
工具
同步
学习
封装
参数
只是
同时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库知识大全视频教程
擦键盘软件开发
数据库原理及应用码名词解释
哪里有高科技互联网
信息网络安全管理题目
广州纵百互联网科技有限公司
福田区服务器机柜厂商
msql数据库文件怎么查看
数据系统数据库简称系统
大兴区环保软件开发推广
新华三网络安全产品扫描
网络攻击服务器
五华区软件开发公司
湖南服务器维修技术
云服务器怎么安装erp
软件开发好找工作吗知乎
维修工单流程表数据库设计
mysql psc数据库
腾讯云邮箱服务器设置方法
一季度经济数据库技术
服务器上有时候没网怎么回事
上海浓趣科技互联网科技
江苏智能网络技术设计
百威收银系统无法打开数据库
页游服务器开发
服务器主机常开有安全隐患吗
stm32软件开发编程
万全服务器管理
公安信息网络安全遵循
2021官方怀旧新增服务器