安装插件
pinia-plugin-unistorage
引入
// main.js
import { createSSRApp } from "vue";
import * as Pinia from "pinia";
import { createUnistorage } from "pinia-plugin-unistorage";export function createApp() {const app = createSSRApp(App);const store = Pinia.createPinia();// 关键代码 👇store.use(createUnistorage());app.use(store);return {app,Pinia, // 此处必须将 Pinia 返回};
}
初始化
根目录创建store
文件夹,在该文件夹内添加pinia2.ts
文件,内容如下:
import {defineStore
} from "pinia";export const useStore = defineStore("pinia2", {state() {return {someState: "hello pinia",token: ''};},unistorage: true, // 开启后对 state 的数据读写都将持久化// unistorage: {// // 初始化恢复前触发// beforeRestore(ctx) {},// // 初始化恢复后触发// afterRestore(ctx) {},// serializer: {// // 序列化,默认为 JSON.stringify// serialize(v) {// return JSON.stringify(v);// },// // 反序列化,默认为 JSON.parse// deserialize(v) {// return JSON.parse(v);// },// },// key: "foo", // 缓存的键,默认为该 store 的 id,这里是 main,// paths: ["foo", "nested.data"], // 需要缓存的路径,这里设置 foo 和 nested 下的 data 会被缓存// }
});// setup 语法也支持
// export const useStore = defineStore(
// "main",
// () => {
// const someState = ref("hello pinia");
// return { someState };
// },
// {
// unistorage: true, // 开启后对 state 的数据读写都将持久化
// },
// );
页面使用
<script>import {useStore} from '@/store/pinia2.ts'const pinia2 = useStore()export default {data() {return {}},methods: {startLogin() {console.log('count--------->1', pinia2.token);pinia2.token = '接口返回的token值'console.log('count--------->2', pinia2.token);},}}
</script>
参考资料
状态管理 Pinia
uni-app vue3如何使用pinia状态管理库