Vue3状态管理之Pinia怎么使用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Vue3状态管理之Pinia怎么使用",在日常操作中,相信很多人在Vue3状态管理之Pinia怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"V
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网科技有限公司
哈尔滨大商圈互联网科技有限公司
中关村互联网科技集团
互联网科技工作委员会毛军
盈实互联网科技
互联网扶贫科技
科技互联网技术
喔噻互联网科技
小马过河互联网科技
未来的互联网科技
融贸通互联网科技
衡水科技产业互联网平台
互联网系的金融科技公司
晋城互联网科技
美国互联网科技实力
广州智享互联网科技
上海万顺科技互联网有限公司招聘
西安左小互联网科技有限公司
科技互联网经济论坛
上海旺乐尼互联网科技有限公司
互联网科技的发展
互联网高科技股票
互联网科技生活的内容
科技互联网的估值
互联网科技革命什么开始
浙南科技城互联网大厦建设工程
北京互联网科技类企业分布
互联网对科技影响
长沙易易互联网科技有限公司
互联网大会出现的黑科技