Vue3中pinia的使用 持久化处理

简单记录一下学习pinia的过程

  1. Pinia是什么?

    Pinia 是一个基于 Vue 3 的状态管理库。 与 Vue 2 中的 Vuex 不同,Pinia 使用了 Vue 3 中的 Composition API,因此可以更好地支持 TypeScript 和更灵活的状态管理方式。

  2. Pinia有什么特点?

  • 简单并且易于使用,它的 API 设计是针对 Composition API 的,因此可以方便地使用 Vue 3 的新特性。
  • 支持 TypeScript,并且提供了强类型的定义,可以在编译时捕获错误。
  • 支持插件机制,可以轻松地扩展它的功能。
  • 支持多个 store 实例,每个 store 实例都可以拥有自己的状态和行为。
  • 支持持久化存储,可以将 store 中的数据保存在本地存储中,以便在页面刷新后仍然可以访问。

使用方法

  1. 安装 pinia
yarn add pinia 
#或者使用 
npm npm install pinia

     2.在 main.ts/js文件里面进行配置

import { createApp } from 'vue' 
import { createPinia } from 'pinia' 
import App from './App.vue' 
import router from './router' 
import './assets/main.css' 
const app = createApp(App)  
const pinia = createPinia()  
app.use(pinia) 
app.use(router) 
app.mount('#app')

在main.ts/js文件内引入Pinia的createPinia()函数

import { createPin
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pinia 是一个基于 Vue3 的状态管理库,它本身并没有提供数据持久化的功能。不过可以借助其他库来实现数据持久化,比如 `localStorage`、`sessionStorage`、IndexedDB 等。 下面以 `localStorage` 为例,介绍如何在 Pinia 实现数据持久化。 首先需要安装 `@vueuse/core` 库: ``` npm install @vueuse/core ``` 然后,在创建 Pinia 实例之前,通过 `useStorage` 方法创建一个本地存储实例: ```javascript import { createPinia } from 'pinia' import { useStorage } from '@vueuse/core' const localStorage = useStorage('my-app') const pinia = createPinia() // 在创建 store 时,使用本地存储实例作为插件 pinia.use(({ store }) => { store.$subscribe((mutation) => { localStorage.setItem(mutation.type, JSON.stringify(mutation.payload)) }) }) ``` 在上面的代码,我们通过 `useStorage` 方法创建了一个名为 `my-app` 的本地存储实例,并在创建 Pinia 实例后,通过 `pinia.use` 方法将其作为插件使用。每次 state 发生变化时,我们将变化的内容以 JSON 格式保存到本地存储。 如果需要在应用初始化时将本地存储的数据还原到 state ,可以在 store 添加一个 `init` 方法: ```javascript const store = defineStore({ id: 'myStore', state: () => ({ count: 0 }), actions: { init() { Object.keys(localStorage).forEach((key) => { this.$patch({ [key]: JSON.parse(localStorage.getItem(key)) }) }) } } }) ``` 在 `init` 方法,我们遍历本地存储的所有 key,并将对应的 value 还原到 state 。 最后,在应用初始化时,可以调用 store 的 `init` 方法来还原数据: ```javascript createApp(App).use(pinia).mount('#app') // 在应用初始化时执行 store 的 init 方法 pinia.store.$init() ``` 这样,就可以实现 Pinia 的数据持久化了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

V开水浇花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值