想要在 uniapp
里面使用 pinia-plugin-persistedstate
会遇到的问题就是 uniapp里面没有浏览器里面的 sessionStorage localStorage
这些 api
。
我们只需要替换掉 pinia-plugin-persistedstate
默认的储存 api
就可以了。使用 createPersistedState 重新创建一个实例, 把里面的 storage 的参数修改为对应的 uniapp 里面的 storage api 就可以. 已经提取在 customStorage 函数里面了.
import 'virtual:uno.css'
import { createSSRApp } from "vue";
import uviewPlus from 'uview-plus'
import { createPinia } from 'pinia'
import { createPersistedState } from 'pinia-plugin-persistedstate'
import App from "./App.vue";
export function createApp() {const pinia = createPinia()pinia.use(customStorage())const app = createSSRApp(App);app.use(uviewPlus)app.use(pinia)return {app,pinia};
}/*** @description 自定义pinia持久化api储存方式为 unisetStorageSync* @returns */
function customStorage() {return createPersistedState({storage: {getItem(key: string) {return uni.getStorageSync(key)},setItem(key: string, value: any) {uni.setStorageSync(key, value)}}})
}