想要在 uniapp
里面使用 pinia-plugin-persistedstate
会遇到的问题就是 uniapp里面没有浏览器里面的 sessionStorage localStorage
这些 api
。
我们只需要替换掉 pinia-plugin-persistedstate
默认的储存 api
就可以了。使用 createPersistedState 重新创建一个实例, 把里面的 storage 的参数修改为对应的 uniapp 里面的 storage api 就可以. 已经提取在 customStorage 函数里面了.
ts
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)
}
}
})
}