Kros的博客 Kros的博客
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云

Kros

凡心所向,素履以往,生如逆旅,一苇以航
首页
  • CSS
  • 工具
  • Vue
  • js
  • Vue3
  • 算法
  • 折腾笔记
一言
  • 分类
  • 标签
  • 归档
码云
  • CSS

  • JavaScript

  • 工具

  • Vue

  • antdv踩坑记录

  • Vue3

    • vue3 setup语法糖
    • vue3实现v-model
    • vue3组件通信
    • vue3使用pinia及pinia持久化
    • vue3使用$nextTick
    • Proxy的实际应用场景
    • ref和reactive的实现原理
    • vue3生命周期
    • 在vue文件外使用store
    • vue3中的编译器宏
    • vue3 ts中拼接本地图片地址
    • 数值滚动实现
    • setup语法糖下自定义组件name
    • vue-router4配置动态路由问题No match found for location with path
    • vue3挂载全局弹窗
    • vue3+vite配置环境变量问题
    • Vue3监听createApp创建的子组件事件
    • vue3源码学习——vue3核心模块
  • 前端
  • Vue3
kros
2022-10-28

vue3使用pinia及pinia持久化

使用Pinia来管理Vue 3应用程序的状态非常简单。

首先,确保项目已经安装了Vue 3和Pinia依赖包。可以通过以下命令进行安装:

npm install vue@next pinia
1

安装完成后,您可以在应用程序的主文件(如main.js)中创建并安装Pinia插件。

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

const app = createApp(App)
const pinia = createPinia()

app.use(pinia)
app.mount('#app')
1
2
3
4
5
6
7
8
9

现在,您可以在组件中使用Pinia来管理状态。首先,创建一个新的store文件(如store.js)并定义您的状态和操作:

import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++
    },
    decrement() {
      this.count--
    }
  }
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

然后,在组件中使用useStore函数来访问状态和操作:

import { useStore } from 'pinia'

export default {
  setup() {
    const store = useStore()

    const increment = () => {
      store.increment()
    }

    const decrement = () => {
      store.decrement()
    }

    return {
      store,
      increment,
      decrement
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

这是一个简单的计数器示例,您可以在组件中访问store的属性和方法,并通过调用这些方法来更新状态。

至于Pinia的持久化功能,Pinia本身并没有提供持久化的机制,但可以使用pinia-plugin-persistedstate插件实现持久化状态。

首先,确保您的项目已经安装了Pinia和pinia-plugin-persistedstate依赖包。

npm install pinia pinia-plugin-persistedstate
1

安装完成后,在您的应用程序主文件(如main.js)中导入并使用pinia-plugin-persistedstate插件:

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { createPersistedState } from 'pinia-plugin-persistedstate'
import App from './App.vue'

const app = createApp(App)
const pinia = createPinia()

pinia.use(createPersistedState()) // 使用插件

app.use(pinia)
app.mount('#app')
1
2
3
4
5
6
7
8
9
10
11
12

现在,您的Pinia状态将自动持久化到浏览器的本地存储中。每当应用程序重新加载时,Pinia会自动将之前保存的状态还原。

请注意,pinia-plugin-persistedstate插件的默认行为是将状态存储在浏览器的localStorage中。如果您想要自定义存储的方式,可以传递选项给createPersistedState函数。例如,您可以指定要使用的存储类型,如sessionStorage:

pinia.use(createPersistedState({ storage: window.sessionStorage }))
1

除了storage选项之外,还可以使用其他选项来更精细地配置持久化行为。可以参考插件的文档 以了解更多详细信息。

除了全局配置外,也可以针对单独module进行配置

export const userStore = defineStore('user', {
  /* 缓存store信息 */
  persist: true, // 开始或关闭缓存
  
  /* 更详细配置 */
  persist: {
    key: 'user-store',
    storage: sessionStorage
    // 更多配置请查看官方文档
  }
})
1
2
3
4
5
6
7
8
9
10
11
上次更新: 2025/09/05, 8:09:00
vue3组件通信
vue3使用$nextTick

← vue3组件通信 vue3使用$nextTick→

最近更新
01
Find the next perfect square
09-05
02
Regex validate PIN code
09-05
03
Find the odd int
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 kros king
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
icon-heart-o icon-heart icon-infinity icon-pause icon-play link next prev