项目构建时选择安装pinia,下面是使用方法以及持久化存储配置
官网:快速开始 | pinia-plugin-persistedstate
1、安装持久化存储插件 pinia-plugin-persistedstate
npm i pinia-plugin-persistedstate -S
2、main.ts
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const app = createApp(App)
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
app.use(pinia)
app.mount('#app')
3、在/src/store/目录下新建user.ts
import { defineStore } from 'pinia'
export const useUserStore = defineStore('user', {
state: () => ({
name: 'Tom', // 用户名
age: 18, // 年龄
weight: 60 // 公斤
}),
getters: {
// 获取体重市斤
getWeight: (state) => {
return state.weight * 2
}
},
actions: {
// 修改用户名
changeUserName(name: string) {
this.name = name
}
},
// 持久化插件配置
persist: {
key: 'store-user', // 本地存储key名称
// storage: sessionStorage // 不设置默认存储localStorage
paths: ['name'] // 指定持久化的值
}
})
4、页面调用
<template>
<div>
<p>pinia-name: {{ name }}</p>
<p>pinia-age: {{ age }}</p>
<p>pinia-市斤: {{ storeUser.getWeight }}</p>
<button @click="changeName">修改用户名称</button>
<button @click="changeUser">批量修改</button>
<button @click="changeNameFun">修改用户名称方法</button>
</div>
</template>
<script setup lang="ts">
import { useUserStore } from '../store/user'
import { storeToRefs } from 'pinia';
const storeUser = useUserStore()
const { name, age } = storeToRefs(storeUser) // 将pinia的值响应式
// 单个修改state
const changeName = () => {
storeUser.name = 'Jack'
}
// 批量修改
const changeUser = () => {
storeUser.$patch({
name: 'LiuTao',
age: 10,
weight: 80
})
}
// 调用action
const changeNameFun = ()=> {
storeUser.changeUserName('Alex')
}
</script>