如何在 uniapp 里面使用 pinia 数据持久化 (pinia-plugin-persistedstate)

想要在 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)
      }
    }
  })
}
相关推荐
FAFU_kyp3 分钟前
Rust 语法速查
开发语言·后端·rust
sheji341617 分钟前
【开题答辩全过程】以 基于JSP的汽车租赁管理系统为例,包含答辩的问题和答案
java·开发语言·汽车
liulilittle19 分钟前
CLANG 交叉编译
linux·服务器·开发语言·前端·c++
沐知全栈开发33 分钟前
Pandas 相关性分析
开发语言
自信阿杜35 分钟前
跨标签页数据同步完全指南:如何选择最优通信方案
前端·javascript
宠友信息1 小时前
面向多端部署的社区平台技术方案:uniapp 与java微服务架构的工程化实践
java·微服务·微信·架构·uni-app·springboot
指尖跳动的光1 小时前
Vue的nextTick()方法
前端·javascript·vue.js
kylezhao20191 小时前
C#读取字节数组某个位的值
开发语言·c#
资生算法程序员_畅想家_剑魔2 小时前
Java常见技术分享-26-事务安全-锁机制-作用与分类
java·开发语言·数据库
qq_406176142 小时前
JS 事件循环(Event Loop)
开发语言·前端·javascript