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
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
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
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
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
2
3
4
5
6
7
8
9
10
11
上次更新: 2025/09/05, 8:09:00