Pinia的使用方法及持久化存储

一、Pinia是什么?

适合那些想要一个简单、轻量级的状态管理库的开发者
pinia是一个用于vue的轻量级的状态管理库,类似于vuex,是vue的另一种状态管理工具

二、Pinia和vuex的区别

pinia

  • Pinia专注于提供一个简单的API来管理应用程序的状态,提供了 Composition-API 风格 的 API
  • 最重要的是在与 TypeScript 一起使用时具有可靠的类型推断支持
  • Pinia基于Vue 3的Composition API构建的,更加灵活和可组合
  • Pinia采用了类似于React Hooks的方式来管理状态,更加直观和易于使用

四大核心属性:
设置状态 state
获取内容 getters
修改数据 actions
插件辅助 plugins

优点:

  • 更加轻量级,因为它不需要使用 Vuex 的一些复杂的概念
  • 更加简单易用:Pinia 的 API 设计更加简单易用,因为它使用了 Vue.js 3 的新特性,如 Composition API
  • Pinia 提供了更加灵活的状态管理方式,因为它支持多个 store 实例,而 Vuex 只支持一个 store 实例

缺点:

  • Pinia 是一个相对较新的状态管理库,因此它可能存在一些未知的问题和限制。
  • 由于 Pinia 是一个相对较新的库,它的生态系统可能不够完善,因此可能需要花费更多的时间来解决问题。

Vuex

  • Vuex是一个更完整的状态管理库,它提供了更多的功能,比如模块化、插件和严格模式等等
  • Vuex则是基于Vue 2的Options API构建的,因此在某些方面可能会受到限制
  • Vuex则采用了一种基于mutations和actions的方式来管理状态,这可能需要更多的代码来实现相同的功能

七大核心属性:
设置状态 state
获取内容 getters
修改数据 mutations
异步操作actions
模块拆分modules
插件辅助 plugins
命名空间namespaced

优点:

  • Vuex 是一个比较成熟的状态管理库,它已经被广泛使用和测试。
  • Vuex 的稳定性也比 Pinia 更高,因为它已经经过了多个版本的迭代和改进。
  • Vuex 提供了一些高级功能,如中间件和插件,使得它可以处理更加复杂的状态管理需求。

缺点:

  • Vuex 的概念比较复杂,因此学习曲线比较陡峭。
  • Vuex 在处理一些简单的状态管理需求时可能会有些繁琐,因为它需要使用一些复杂的概念和 API

二、如何使用

1、安装pinia(仅限于Vue3)

npm i pinia

2、配置

1、在src目录下新建一个stroe文件夹,在文件夹中新建一个index.ts
2、通过import引入到pinia到index文件中并导出

在这里插入图片描述


import { createPinia, defineStore } from 'pinia'
export const Pinia = createPinia()
export default defineStore('admin', {
//这里的state与vue2中用来存放初始化变量的data的写法相似,需要return
 state: () => {
        return {
            count: 10,
        }
    },
 getters: {
        count: state => state.count
      },
//actions 相当于组件中的 methods。
//可以使用 defineStore() 中的 actions 属性定义
  actions: {
  
        }
    },
)
3、在main.js入口文件进行注册

import { createApp } from 'vue'
import App from './App.vue'
import {createPinia} from 'pinia'

const pinia = createPinia()

createApp(App).use(pinia).mount('#app')

三、持久化存储 参考 GitHub

1、使用您常用的软件包管理器安装
pnpm : pnpm i pinia-plugin-persistedstate
npm : npm i pinia-plugin-persistedstate
yarn : yarn add pinia-plugin-persistedstate
2、将插件添加到pinia

import { createApp } from 'vue'
import App from './App.vue'
import {createPinia} from 'pinia'

//pinia数据持久化  下载插件
// npm i pinia-plugin-persistedstate
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)

createApp(App).use(pinia).mount('#app')

3、将“持久化”选项添加到要持久化的存储中
import { defineStore } from 'pinia'

export const useStore = defineStore('store', {
  state: () => {
    return {
      someState: 'hello pinia',
    }
  },
  persist: true, //开启
})

在这里插入图片描述

刷新数据不丢失

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Pinia 是一个用于 Vue.js 的状态管理库,它提供了一种简单且可扩展的方式来管理应用程序的状态。Pinia-plugin-persistedstate 是一个 Pinia 插件,它可以帮助你将应用程序的状态持久到本地存储中,以便在刷新页面或重新加载应用程序时保持状态的一致性。 使用 pinia-plugin-persistedstate 插件进行持久的步骤如下: 1. 安装插件: 你可以使用 npm 或者 yarn 来安装插件: ``` npm install pinia-plugin-persistedstate ``` 或者 ``` yarn add pinia-plugin-persistedstate ``` 2. 导入插件并注册: 在你的应用程序的入口文件中,导入 `pinia-plugin-persistedstate` 并将其注册到 Pinia 实例中: ```javascript import { createApp } from 'vue' import { createPinia } from 'pinia' import { createPersistedState } from 'pinia-plugin-persistedstate' const pinia = createPinia() pinia.use(createPersistedState()) const app = createApp(App) app.use(pinia) app.mount('#app') ``` 3. 配置插件: 你可以通过传递选项对象来配置插件,例如指定要持久的状态模块、存储键名等: ```javascript pinia.use(createPersistedState({ key: 'my-app-state', // 存储键名,默认为 'pinia-state' paths: ['counter'], // 要持久的状态模块,默认为全部模块 storage: localStorage // 存储引擎,默认为 localStorage })) ``` 4. 使用持久的状态: 在你的组件中,你可以像使用普通的 Pinia 状态一样使用持久的状态: ```javascript import { useStore } from 'pinia' export default { setup() { const store = useStore() // 读取持久的状态 console.log(store.counter) // 修改持久的状态 store.counter++ } } ``` 这样,你就可以使用 pinia-plugin-persistedstate 插件来实现 Pinia 状态的持久了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值